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