3 回答
TA贡献1854条经验 获得超8个赞
这是因为 11,12,13 的 if 语句是最后一个,尝试将最后一个 if 语句放在第一个 if 语句(当前 if 语句之上),看看会发生什么,更改后可能会出现其他一些边缘情况,但它会让你知道你做错了什么
if str(number).endswith("4" or "5" or "6" or "7" or "8" or "9" or "0" or "11" or "12" or "13"):
numberSuffix = "th of all"
elif str(number).endswith("1"):
numberSuffix = "st of all"
elif str(number).endswith("2"):
numberSuffix = "nd of all"
elif str(number).endswith("3"):
numberSuffix = "rd of all"
我建议至少为此做一个定义
TA贡献1863条经验 获得超2个赞
该行没有执行您想要执行的操作:
if str(number).endswith("4" or "5" or "6" or "7" or "8" or "9" or "0" or "11" or "12" or "13"):
这里发生的事情"4" or "5" or "6" or ...只是被评估为"4"。来吧,你自己尝试一下。您实际上需要在这里做的事情更像是:
if str(number).endswith("4") or str(number).endswith("5") or ...
这显然需要输入很多额外的内容。执行 @Aplet123 建议的操作并检查实际数字而不是数字的字符串转换可能要容易得多。
last_digit = number % 10
last_two_digits = number % 100
if 10 < last_two_digits < 14
numberSuffix = "th of all"
elif last_digit == 1:
numberSuffix = "st of all"
elif last_digit == 2:
numberSuffix = "nd of all"
elif last_digit == 3:
numberSuffix = "rd of all"
else:
numberSuffix = "th of all"
TA贡献1780条经验 获得超3个赞
只需添加特殊情况:
def get_ending(num):
if num in [11, 12, 13]:
return "th"
lastdig = num % 10
if lastdig == 1:
return "st"
elif lastdig == 2:
return "nd"
elif lastdig == 3:
return "rd"
else:
return "th"
# more code...
while True:
number += 1
numberSuffix = get_ending(number) + " of all"
print(str(number) + numberSuffix)
添加回答
举报