Zahl als Worte schreiben

Code-Stücke können hier veröffentlicht werden.
Antworten
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Weil ich eine Frage falsch verstanden hatte, hier eine Lösung für etwas, das eigentlich niemand wissen wollte, aber was Spaß machte, zu bauen:

Code: Alles auswählen

w1 = "null ein zwei drei vier fünf sechs sieben acht neun zehn elf zwölf \
dreizehn vierzehn fünfzehn sechzehn siebzehn achtzehn neunzehn".split()
w2 = "zwanzig dreißig vierzig fünfzig sechzig siebzig achtzig neunzig".split()

def zahl_in_worten(n, s=True, z=False):
    if n < 0: raise ValueError
    if n == 0 and z: return ""
    if n == 1 and s: return "eins"
    if n < 20: return w1[n]
    if n < 100:
        w = w2[(n - 20) // 10]
        if n % 10:
            w = w1[n % 10] + "und" + w
        return w
    if n < 1000:
        return w1[n // 100] + "hundert" + zahl_in_worten(n % 100, z=True)
    if n < 1000000:
        return zahl_in_worten(n // 1000, s=False) + "tausend" + zahl_in_worten(n % 1000, z=True)
    raise ValueError

print(zahl_in_worten(0))
print(zahl_in_worten(100))
print(zahl_in_worten(1984))
print(zahl_in_worten(2010))
print(zahl_in_worten(999999))
Stefan
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Code: Alles auswählen

>>> print(zahl_in_worten(101000)) 
einhunderteinstausend
Sollte es nicht "einhunderteintausend" heißen?
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Code: Alles auswählen

def zahl_in_worten(n, s=True, z=False):
    if n < 0: return "minus " + zahl_in_worten(abs(n))
    ....
Wieso nicht so?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Weil ich auf positive Zahlen fixiert war. Natürlich kann man das ergänzen. Ob "eins" oder "ein", da versagt mein Sprachgefühl. Ist es nur "eins", wenn danach nichts mehr kommt? Dann müsste man meinen Versuch mit der Variable "s" umschreiben.

Stefan
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

sma hat geschrieben:Ist es nur "eins", wenn danach nichts mehr kommt?
Ja.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Antworten