Python :: Aufgabe #276 :: Lösung #4
4 Lösungen
#276
Zahlen in Wörtern ausdrücken
Anfänger - Python
von Gisbert5020
- 30.04.2020 um 15:17 Uhr
Schreiben Sie ein Programm, das Zahlen von 0 bis 99 in Wörtern fasst.
Zusatzaufgabe : Erweitern Sie das Programm von 0 bis 1000.
Zusatzaufgabe : Erweitern Sie das Programm von 0 bis 1000.
#4
von owl_curry (20 Punkte)
- 25.07.2020 um 22:24 Uhr
Python-Code
""" AUFGABENSTELLUNG: Schreiben Sie ein Programm, das Zahlen von 0 bis 99 in Woerter fasst / uebersetzt. Beispiel: 57 => siebenundfünfzig Welche Zahl uebersetzt wird, ist via Usereingabe zu ermitteln Zusatzaufgabe: Erweitern Sie das Programm von 0 bis 1000 Eigener Zusatz: Eingabekontrolle und Vorzeichen beachten """ # Dictionaries einstellig = {"1":"ein","2":"zwei","3":"drei", "4":"vier","5":"fünf","6":"sechs", "7":"sieben","8":"acht","9":"neun"} zig = {"2":"zwanzig","3":"dreizig","4":"vierzig", "5":"fünfzig","6":"sechzig","7":"siebzig", "8":"achtzig","9":"neunzig"} hundert = {"1":"einhundert","2":"zweihundert","3":"dreihundert", "4":"vierhundert","5":"fünfhundert","6":"sechshundert", "7":"siebenhundert", "8":"achthundert","9":"neunhundert"} special = {"1":"eins","11":"elf","12":"zwölf", "16":"sechzehn","17":"siebzehn","0":"null", "1000":"tausend"} #Funktionen def isitSpecial(zahl): #Teste Zahl if zahl in special: #Gib entsprechenden Wert zurueck return special[zahl] else: #Keine Special Zahl return "no" def umwandlung(zahl): laenge = len(zahl) if laenge == 3: #Hole erstes Segment der Zahl abschnitt = hundert[zahl[0]]+"und" #Pruefe zweiten Abschnitt der Zahl auf Specialzahlen test = isitSpecial(zahl[1]+zahl[2]) if test!="no": #Wenn Special #Kombiniere Abschnitt mit Specialsegment return abschnitt+test else: #Nichts Special #Teste ob reine hunderter Zahl, wenn nein if zahl[1] != "0" and zahl[2] != "0": #Kombiniere Abschnitt mit zweiten Segment return abschnitt+zweistellig(zahl[1],zahl[2]) else: #wenn ja return hundert[zahl[0]] elif laenge == 2: #Weiterleitung an Funktion zweistellig return zweistellig(zahl[0],zahl[1]) elif laenge == 1: #direkt in der Dict suchen return einstellig[zahl[0]] else: return "Es können bisher nur Zahlen von 0-1000 verarbeitet werden." def zweistellig(stelle1,stelle2): if stelle1 != "1": if stelle1 in zig and stelle2 == "0": return zig[stelle1] elif stelle1 == "0" and stelle2 != "0": return einstellig[stelle2] else: return einstellig[stelle2] + "und" + zig[stelle1] else: return einstellig[stelle2]+"zehn" def main(): #Failsafe while True: #Frage nach Eingabe usereingabe=input("Gib eine Zahl von 0-1000 ein: ") try: #Versuche in Int umzuwandeln usereingabe = int(usereingabe) #Wandle zurueck in String um usereingabe = str(usereingabe) #Wenn Erfolgreich breche aus dem While aus break except: #Wenn nicht erfolgreich, gebe Fehlermeldung print("Die Eingabe konnte nicht verarbeitet werden.\nNur Zahlen bitte!") #Vorzeichenabdeckung vorzeichen = "" if usereingabe[0] == "-": vorzeichen = "minus " usereingabe = usereingabe.replace("-","") test = isitSpecial(usereingabe) if test == "no": ausgabe = umwandlung(usereingabe) else: ausgabe = test #Ausgabe der Uebersetzung print(vorzeichen + ausgabe.capitalize()) # Mainpart auslösen if __name__ == "__main__": main()
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1