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