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

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.
#3
vote_ok
von Nachbar (2820 Punkte) - 27.05.2020 um 20:58 Uhr
Quellcode ausblenden Python-Code
# -*- coding: utf-8 -*-

single = {"0":"null", "1":"eins", "2":"zwei", "3":"drei", "4":"vier", "5":"fünf", "6":"sechs", "7":"sieben", "8":"acht", "9":"neun"}
teens = {"10":"zehn", "11":"elf", "12":"zwölf", "13":"dreizehn", "14":"vierzehn", "15":"fünfzehn", "16":"sechzehn", "17":"siebzehn", "18":"achtzehn", "19":"neunzehn"}
tenner = {"2":"zwanzig", "3":"dreißig", "4":"vierzig", "5":"fünfzig", "6":"sechzig", "7":"siebzig", "8":"achtzig", "9":"neunzig"}

n = input("Zahl: ")

# 0 bis 99
def two_digit(n):
    # 1 - 9
    if len(n) == 1:
        output = single.get(n)
    elif len(n) == 2:
        # 01, 02, ..., 09 abfangen
        if n[0] == "0":
            return
        # 10 - 19
        elif n[0] == "1":
            output = teens.get(n)
        # 20, 30, ..., 90
        elif n[1] == "0":
            output = tenner.get(n[0])
        else:
            # 21, 31, ..., 91
            if n[1] == "1":
                output = "einund" + tenner.get(n[0])
            # alle anderen
            else:
                output = single.get(n[1]) + "und" + tenner.get(n[0])
    return output

# 100 bis 999
if len(n) == 3:
    last_two = two_digit(n[1:])
    # 100
    if n == "100":
        output = "einhundert"
    # 200, 300, ..., 900
    elif n[0] != "1":
        output = single.get(n[0]) + "hundert"
    # 101 - 109
    elif n[0] == "1" and n[1] == "0":
        output = single.get(n[0])[:-1] + "hundert" + single.get(n[2])
    elif n[1] == "0":
        output = single.get(n[0]) + "hundert" + single.get(n[2])
    else:
        # 110 - 999
        if n[0] == "1":
            output = single.get(n[0])[:-1] + "hundert" + last_two
        elif n[0] != "1":
            output = single.get(n[0]) + "hundert" + last_two
else:
    output = two_digit(n)

print(output)


Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

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

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.