【发布时间】:2021-12-30 14:18:57
【问题描述】:
我正在学习 Python 速成课程(第 5 章结束)。有一个示例问题可以打印序数 1 - 9、1"st"、2"nd" 等的正确结尾。我扩展了示例,使其适用于任何数字,如下所示。
如何才能写得更简洁?我可以查找哪些概念?我是中级 R 用户,但对 Python 很陌生。谢谢
nums = list(range(1, 50))
for i in nums:
if i % 10 == 1 and i % 100 != 11:
end = "st"
elif i % 10 == 2 and i % 100 != 12:
end = "nd"
elif i % 10 == 3 and i % 100 != 13:
end = "rd"
else:
end = "th"
print(f"{i}{end}")
【问题讨论】:
-
你可以使用字典,你可以在其中添加一个地方作为键和结束值作为值和例外情况
-
不确定这里的简洁是什么意思,但 DRY 说
i % 10和i % 100应该是可变的。如果您所做的只是迭代它,range也不需要list(。除了这些 我 认为 if-elif-else 是要走的路,字典会因为!=条件的存在而混淆。
标签: python dictionary lookup