Python :: Aufgabe #276 :: Lösung #2

4 Lösungen Lösungen öffentlich
#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.
#2
vote_ok
von daVinci (320 Punkte) - 13.05.2020 um 21:08 Uhr
Quellcode ausblenden 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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1996394

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.