Python :: Aufgabe #276 :: Lösung #2
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.
#2
von daVinci (320 Punkte)
- 13.05.2020 um 21:08 Uhr
Python-Code
########################################################################################### # Aufgabe #276 - Wörter in Zahlen ausdrücken [Hauptaufgabe] ########################################################################################### # ___________________________________ #____| A u f g a b e n s t e l l u n g |_________________________________________________ # # Schreiben Sie ein Programm, das Zahlen von 0 bis 99 in Wörtern fasst. # Zusatzaufgabe: Erweitern Sie das Programm von 0 bis 1000. # _____________________________ #____| I n f o r m a t i o n e n |_______________________________________________________ # # Der "unausgeschmückte" Programmcode befindet sich ganz unten als Kommentar. # ########################################################################################### #=========================================================================| code by daVinci ########################################################################################### #------------------------------------------------------------------------------------------ # Funktion für Wiederholungsabfrage def wiederholen (): nochmal = input("Möchtest du noch eine Zahl als Wort ausgeben? [J]a / [N]ein: ") if not (nochmal == "j" or nochmal == "J"): return 1 #------------------------------------------------------------------------------------------ # Liste mit Einerstellen LE = ["null", "ein", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun"] #------------------------------------------------------------------------------------------ # Liste mit Zehnerstellen LZ = ["", "zehn", "zwanzig", "dreißig", "vierzig", "fünfzig", "sechzig", "siebzig", "achtzig", "neunzig"] #------------------------------------------------------------------------------------------ # Liste/Dictonary mit "Sonderzahlen" - 0,11,12,13,14,15,16,17,18,19 LSZ = {"11": "elf", "12": "zwölf", "13": "dreizehn", "14": "vierzehn", "15": "fünfzehn", "16": "sechzehn", "17": "siebzehn", "18": "achtzehn", "19": "neunzehn"} #------------------------------------------------------------------------------------------ # Variablen (Zeichenketten) txt_zahl = "Deine Eingabe ist die Zahl ===> " txt_ausgabe = "AUSGABE ALS WORT =============> " #------------------------------------------------------------------------------------------ # Title und Beschreibung print ("\n=====================================================================") print (" - WÖRTER IN ZAHLEN AUSDRÜCKEN -") print ("=====================================================================\n") print ("Programm gibt die eingegebene Zahl als Wort aus. Die eingegebene Zahl") print ("muss im Bereich von 0 bis einschließlich 1000 liegen.\n") #------------------------------------------------------------------------------------------ # Schleife für erneute Eingabe (wenn gewünscht) while True: print ("=====================================================================") eingabe_zahl = eval(input("Bitte eine Zahl (0 bis 1000) eingeben: ")) print ("=====================================================================\n") #-------------------------------------------------------------------------------------- # Eingabe außerhalb des Gültigkleitsbereiches if (eingabe_zahl < 0 or eingabe_zahl > 1000): print (" ! F E H L E R !") print ("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -") print ("Die eingegebene Zahl liegt nicht im Gültigkeitsbereich!") print ("Die Zahl muss im Bereich von 0 bis 1000 liegen.") print ("Versuchen Sie es nocheinmal...\n") continue #-------------------------------------------------------------------------------------- # Eingabe liegt zwischen 0 und 10 elif (eingabe_zahl < 10 and eingabe_zahl >= 0): print (txt_zahl, eingabe_zahl) print (txt_ausgabe, LE[eingabe_zahl], "\n") if wiederholen() == 1: break continue #-------------------------------------------------------------------------------------- # Eingabe liegt zwischen 10 und 99 elif (eingabe_zahl <= 99 and eingabe_zahl >= 10): zahl1_konvert = str(eingabe_zahl) [0:1] zahl2_konvert = str(eingabe_zahl) [1:] zk1 = int(zahl1_konvert) zk2 = int(zahl2_konvert) # Eingabe ist eine "Sonderzahl" if zk1 == 1: szk = str(eingabe_zahl) print (txt_zahl, eingabe_zahl) print (txt_ausgabe, LSZ[szk], "\n") if wiederholen() == 1: break continue # Eingabe ist eine 2-stellige Zahl und eine glatte Zehnerstelle elif zk2 == 0: #szk = str(eingabe_zahl) print (txt_zahl, eingabe_zahl) print (txt_ausgabe, LZ[zk1], "\n") if wiederholen() == 1: break continue # Eingabe ist eine 2-stellige Zahl, aber keine glatte Zehnerstelle else: print (txt_zahl, eingabe_zahl) print (txt_ausgabe, LE[zk2] + "und" + LZ[zk1], "\n") if wiederholen() == 1: break continue #-------------------------------------------------------------------------------------- # Eingabe liegt zwischen 100 und 999 elif (eingabe_zahl <= 999 and eingabe_zahl >= 100): zahl1_konvert = str(eingabe_zahl) [0:1] zahl2_konvert = str(eingabe_zahl) [1:2] zahl3_konvert = str(eingabe_zahl) [2:] sonder_konvert = str(eingabe_zahl) [1:] zk1 = int(zahl1_konvert) zk2 = int(zahl2_konvert) zk3 = int(zahl3_konvert) # Eingabe mit Sonderzahl (im Hunderter-Bereich) if zk2 == 1: szk = str(sonder_konvert) print (txt_zahl, eingabe_zahl) print (txt_ausgabe, LE[zk1] + "hundertund" + LSZ[szk], "\n") if wiederholen() == 1: break continue # Eingabe Glatte-Zehner-Zahl im Hunderter-Bereich elif (zk3 == 0 and zk2 == 0): print (txt_zahl, eingabe_zahl) print (txt_ausgabe, LE[zk1] + "hundert\n") if wiederholen() == 1: break continue # Eingabe Glatter Hunderter elif zk3 == 0: print (txt_zahl, eingabe_zahl) print (txt_ausgabe, LE[zk1] + "hundertund" + LZ[zk2], "\n") if wiederholen() == 1: break continue # Eingabe ist eine 3-stellige Zahl, aber keine glatte Zehnerstelle # und/oder Sonderzahl else: print (txt_zahl, eingabe_zahl) print (txt_ausgabe, LE[zk1] + "hundertund" + LE[zk3] + "und" + LZ[zk2], "\n") if wiederholen() == 1: break continue #-------------------------------------------------------------------------------------- # Eingabe ist 1000 elif eingabe_zahl == 1000: print (txt_zahl, eingabe_zahl) print ("AUSGABE ALS WORT =============> eintausend\n") if wiederholen() == 1: break continue ########################################################################################### # Unausgeschmückter Programmcode ########################################################################################### # def wiederholen (): # nochmal = input("Möchtest du noch eine Zahl als Wort ausgeben? [J]a / [N]ein: ") # if not (nochmal == "j" or nochmal == "J"): # return 1 # # LE = ["null", "ein", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", # "neun"] # # LZ = ["", "zehn", "zwanzig", "dreißig", "vierzig", "fünfzig", "sechzig", # "siebzig", "achtzig", "neunzig"] # # LSZ = {"11": "elf", "12": "zwölf", "13": "dreizehn", "14": "vierzehn", # "15": "fünfzehn", "16": "sechzehn", "17": "siebzehn", "18": "achtzehn", # "19": "neunzehn"} # # txt_zahl = "Deine Eingabe ist die Zahl ===> " # txt_ausgabe = "AUSGABE ALS WORT =============> " # # while True: # eingabe_zahl = eval(input("Bitte eine Zahl (0 bis 1000) eingeben: ")) # # if (eingabe_zahl < 0 or eingabe_zahl > 1000): # print ("Die eingegebene Zahl liegt nicht im Gültigkeitsbereich!") # continue # # elif (eingabe_zahl < 10 and eingabe_zahl >= 0): # print (txt_zahl, eingabe_zahl) # print (txt_ausgabe, LE[eingabe_zahl], "\n") # # if wiederholen() == 1: # break # continue # # elif (eingabe_zahl <= 99 and eingabe_zahl >= 10): # zahl1_konvert = str(eingabe_zahl) [0:1] # zahl2_konvert = str(eingabe_zahl) [1:] # zk1 = int(zahl1_konvert) # zk2 = int(zahl2_konvert) # # if zk1 == 1: # szk = str(eingabe_zahl) # print (txt_zahl, eingabe_zahl) # print (txt_ausgabe, LSZ[szk], "\n") # # if wiederholen() == 1: # break # continue # # elif zk2 == 0: # #szk = str(eingabe_zahl) # print (txt_zahl, eingabe_zahl) # print (txt_ausgabe, LZ[zk1], "\n") # # if wiederholen() == 1: # break # continue # # else: # print (txt_zahl, eingabe_zahl) # print (txt_ausgabe, LE[zk2] + "und" + LZ[zk1], "\n") # # if wiederholen() == 1: # break # continue # # elif (eingabe_zahl <= 999 and eingabe_zahl >= 100): # zahl1_konvert = str(eingabe_zahl) [0:1] # zahl2_konvert = str(eingabe_zahl) [1:2] # zahl3_konvert = str(eingabe_zahl) [2:] # sonder_konvert = str(eingabe_zahl) [1:] # zk1 = int(zahl1_konvert) # zk2 = int(zahl2_konvert) # zk3 = int(zahl3_konvert) # # if zk2 == 1: # szk = str(sonder_konvert) # print (txt_zahl, eingabe_zahl) # print (txt_ausgabe, LE[zk1] + "hundertund" + LSZ[szk], "\n") # # if wiederholen() == 1: # break # continue # # elif (zk3 == 0 and zk2 == 0): # print (txt_zahl, eingabe_zahl) # print (txt_ausgabe, LE[zk1] + "hundert\n") # # if wiederholen() == 1: # break # continue # # elif zk3 == 0: # print (txt_zahl, eingabe_zahl) # print (txt_ausgabe, LE[zk1] + "hundertund" + LZ[zk2], "\n") # # if wiederholen() == 1: # break # continue # # else: # print (txt_zahl, eingabe_zahl) # print (txt_ausgabe, LE[zk1] + "hundertund" + LE[zk3] + "und" + LZ[zk2], "\n") # # if wiederholen() == 1: # break # continue # # elif eingabe_zahl == 1000: # print (txt_zahl, eingabe_zahl) # print ("AUSGABE ALS WORT =============> eintausend\n") # # if wiederholen() == 1: # break # continue # ########################################################################################### ###########################################################################################
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1