第一次发帖在这里,这不是什么大问题,因为我得到了我想要的输出,但我只是想知道是否有更简单的方法来解决这个问题。还要记住,我是 python 的初学者(我使用的是 python 3),我真的很喜欢它,这完全是一篇好奇的帖子。
所以我正在进行的练习要求你创建一个 if-elif-else 链来循环数字 1-9 并在末尾添加适当的后缀 (st,rd,nd..etc) 然后打印它们一次行。这是我想出的。
ordinalNumbers = range(1,10)
for ordinalNumber in ordNumbers:
if ordinalNumber == 1:
print(str(ordinalNumber) + "st")
elif ordinalNumber == 2:
print(str(ordinalNumber) + "nd")
elif ordinalNumber == 3:
print(str(ordinalNumber) + "rd")
else:
print(str(ordinalNumber) + "th")
就像我说的那样,这给了我正在寻找的输出,只是想知道是否有一种重复性较低的方法来解决这个问题。谢谢大家!
请您参考如下方法:
在每种情况下查找重复的内容:对 str(ordinalNumber) 和 print 的调用。 if 语句的真正作用是选择要使用的正确后缀:
for ordinalNumber in ordNumbers:
if ordinalNumber == 1:
suffix = "st"
elif ordinalNumber == 2:
suffix = "nd"
elif ordinalNumber == 3:
suffix = "rd"
else:
suffix = "th"
print(str(ordinalNumber) + suffix)
很多时候,您可以用合适的dict 查找来替换if 语句。适当的 dict 在之前的重构之后更容易看到。
suffixes = {1: "st", 2: "nd", 3: "rd"}
for ordinalNumber in ordNumbers:
print(str(ordinalNumber) + suffixes.get(ordinalNumber, "th"))
人们可能会考虑使用嵌套条件表达式,但我自己并不是很喜欢。
print(str(ordinalNumber) + "st" if ordinalNumber == 1 else
"nd" if ordinalNumber == 2 else
"rd" if ordinalNumber == 3 else
"th")
