2016-08-19 3 views
0

Ich habe eine Funktion, die einen Integer als Eingabe und die Zahl als Worte gibt, es funktioniert, wie ich mit Ausnahme von 30,40,50,60,70,80 und 90 wollen, ist es für 90 = ninty zero zurückgibt, da die Funktion durch Aufteilung der Arbeiten Wie kann ich die Null für die obigen Zahlen entfernen? mein Code ist wie folgtAusnahmen von Python-Funktion hinzufügen

d = {0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five', 
    6: 'six', 7: 'seven', 8: 'eight', 9: 'nine', 10: 'ten', 
    11: 'eleven', 12: 'twelve', 13: 'thirteen', 14: 'fourteen', 
    15: 'fifteen', 16: 'sixteen', 17: 'seventeen', 18: 'eighteen', 
    19: 'ninteen', 20: 'twenty', 
    30: 'thirty', 40: 'fourth', 50: 'fifty', 60: 'sixty', 
    70: 'seventy', 80: 'eighty', 90: 'ninty'} 

def wordify(n): 
    k = 1000 
    m = k * 1000 
    if n < 20: 
     return d[n] 
    if n < 100: 
     if n % 100 == 0: return d[n] 
     else: return d[n // 10 * 10] + ' ' + d[n % 10] 
    if n < k: 
     if n % 100 == 0: return d[n // 100] + ' hundred' 
     else: return d[n // 100] + ' hundred ' + wordify(n % 100) 
    if n < m: 
     if n % k == 0: return wordify(n // k) + ' thousand' 
     else: return wordify(n // k) + ' thousand, ' + wordify(n % k) 


print wordify(90) 
+1

Überprüfen Sie, ob die Zahl durch 10 teilbar ist –

+0

Sie möchten '40:' vierte' ändern ' –

+0

@RolfofSaxony Danke, das sah komplett aus –

Antwort

1

Ändern der folgenden Zeile:

if n % 100 == 0: return d[n] 

zu

if n % 10 == 0: return d[n] 

behebt dieses Problem. Da es dann immer das einzelne Wort verwenden und nicht die Null dahinter hinzufügen, wenn es ein Vielfaches von 10 ist.

+1

Danke, das hat mein Problem gelöst –

0

Führen Sie einfach einen zusätzlichen Durchlauf, um Probleme zu beheben. Manchmal einfacher als zu versuchen, herauszufinden, wie man sie vermeidet.

print wordify(90).replace(" zero","") 

oder: Ihre Funktion in wordify internal_wordify umbenennen, dann definieren wordify wie folgt aus:

def wordify(n): 
    return internal_wordify(n).replace(" zero","")