2016-08-05 21 views
0

Ich habe ein Problem mit meinem Python-Code. Ich versuche, die Ordnungszahl der Benutzereingabe anzuzeigen. Also, wenn ich 32 eintippte, würde es 32. anzeigen, oder wenn ich 576 eintippte, würde es 576. anzeigen. Das einzige, was nicht funktioniert, ist 93, es zeigt 93 an. Jede andere Nummer funktioniert und ich bin mir nicht sicher warum. Hier ist mein Code:Ordnungszahlfehler, Python 3

num = input ('Enter a number: ') 
end = '' 
if num[len(num) - 2] != '1' or len(num) == 1: 
    if num.endswith('1'): 
    end = 'st' 
    elif num.endswith('2'): 
    end = 'nd' 
    elif num == '3': 
    end = 'rd' 
    else: 
    end = 'th' 
else: 
    end = 'th' 
ornum = num + end 
print (ornum) 

Antwort

1

Sie endswith() an 2 Stellen, anstelle von 3:

if num.endswith('1'): 
    end = 'st' 
elif num.endswith('2'): 
    end = 'nd' 
#elif num == '3': WRONG 
elif num.endswith('3'): 
    end = 'rd' 

In Ihrem Code wird 'if num gleich 3' anstelle von 'if num ends with 3' getestet.

1

Aus irgendeinem Grund haben Sie vergessen endswith() zu überprüfen, wenn es darum geht, 3:

elif num.endswith('3'): 
    end = 'rd' 

Auf einer seitlichen Anmerkung, können Sie Ihren Code durch das Lesen this question auf SE Code Review verbessern , die dieses fantastische Version enthalten:

SUFFIXES = {1: 'st', 2: 'nd', 3: 'rd'} 
def ordinal(num): 
    if 10 <= num % 100 <= 20: 
     suffix = 'th' 
    else: 
     suffix = SUFFIXES.get(num % 10, 'th') 
    return str(num) + suffix