序号错误,Python 3
Ordinal Number Error, Python 3
我的 Python 代码有问题。我正在尝试显示用户输入的序号。因此,如果我键入 32,它将显示第 32 位,或者如果我键入 576,它将显示第 576 位。唯一不起作用的是93,它显示第93。每个其他数字都有效,我不确定为什么。这是我的代码:
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)
由于某些原因,当涉及到 3
时,您忘记检查 endswith()
:
elif num.endswith('3'):
end = 'rd'
附带说明一下,您可以通过阅读 this question SE Code Review 来改进您的代码,其中包括这个很棒的版本:
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
您在 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'
在您的代码中,它将测试 'if num is equal to 3' 而不是 'if num ends with 3'。
我的 Python 代码有问题。我正在尝试显示用户输入的序号。因此,如果我键入 32,它将显示第 32 位,或者如果我键入 576,它将显示第 576 位。唯一不起作用的是93,它显示第93。每个其他数字都有效,我不确定为什么。这是我的代码:
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)
由于某些原因,当涉及到 3
时,您忘记检查 endswith()
:
elif num.endswith('3'):
end = 'rd'
附带说明一下,您可以通过阅读 this question SE Code Review 来改进您的代码,其中包括这个很棒的版本:
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
您在 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'
在您的代码中,它将测试 'if num is equal to 3' 而不是 'if num ends with 3'。