2016-08-05 9 views
0

私のPythonコードに問題があります。私はユーザーの入力の順序番号を表示しようとしています。したがって、32をタイプした場合は32を表示し、576をタイプした場合は576を表示します。唯一動作しないのは93で93番目を表示します。他のすべての番号が動作し、私は理由がわかりません。ここに私のコードは次のとおりです。それは3に来るとき、あなたがendswith()をチェックするのを忘れ何らかの理由序数エラー、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) 

答えて

1

あなたは2ヶ所でendswith()を使用し、代わりに3:

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

コードでは、「numが3で終わっている場合」ではなく「numが3の場合」をテストします。

1

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

サイドノートでは、あなたはSEコードレビューにthis questionを読むことによって、あなたのコードを向上させることができます、この素晴らしいバージョン含まれて:

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 
関連する問題