3 回答

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
這是因?yàn)?11,12,13 的 if 語(yǔ)句是最后一個(gè),嘗試將最后一個(gè) if 語(yǔ)句放在第一個(gè) if 語(yǔ)句(當(dāng)前 if 語(yǔ)句之上),看看會(huì)發(fā)生什么,更改后可能會(huì)出現(xiàn)其他一些邊緣情況,但它會(huì)讓你知道你做錯(cuò)了什么
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"
我建議至少為此做一個(gè)定義

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
該行沒(méi)有執(zhí)行您想要執(zhí)行的操作:
if str(number).endswith("4" or "5" or "6" or "7" or "8" or "9" or "0" or "11" or "12" or "13"):
這里發(fā)生的事情"4" or "5" or "6" or ...只是被評(píng)估為"4"。來(lái)吧,你自己嘗試一下。您實(shí)際上需要在這里做的事情更像是:
if str(number).endswith("4") or str(number).endswith("5") or ...
這顯然需要輸入很多額外的內(nèi)容。執(zhí)行 @Aplet123 建議的操作并檢查實(shí)際數(shù)字而不是數(shù)字的字符串轉(zhuǎn)換可能要容易得多。
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貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
只需添加特殊情況:
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)
添加回答
舉報(bào)