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
###########################################################################################
# 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
