I'm taking an Intro to Python course online并希望更有效地解决这个问题。
第1,第2,第3,第4,第5,第6,第7,第8,第9个词被称为序数形容词。编写一个程序,从输入读取1到9之间的整数x。程序应该输出对应于x的序数形容词。 提示:你不需要有9个独立案件; 4就够了。
x = int(input())
if x == 1:
print("1st")
elif x == 2:
print("2nd")
elif x == 3:
print("3rd")
elif x == 4:
print("4th")
elif x == 5:
print("5th")
elif x == 6:
print("6th")
elif x == 7:
print("7th")
elif x == 8:
print("8th")
elif x == 9:
print("9th")
我无法弄清楚如何在四行中更有效地写出来。它涉及清单吗?他们还没有教过列表或数组。
答案 0 :(得分:8)
x = int(input())
if x == 1:
print("1st")
elif x == 2:
print("2nd")
elif x == 3:
print("3rd")
else:
print(str(x)+"th")
答案 1 :(得分:8)
只需使用字符串格式。并考虑1,2,3和其余数字之间的不同后缀
x = int(raw_input())
if x == 1:
suffix = "st"
elif x == 2:
suffix = "nd"
elif x == 3:
suffix = "rd"
else:
suffix = "th"
print "{number}{suffix}".format(number=x,suffix=suffix)
您实际上可以使用映射而不是if / else块
以更加pythonic的方式执行此操作x = int(raw_input())
suffix = {1: "st", 2: "nd", 3: "rd"}.get(x, "th")
print "{number}{suffix}".format(number=x, suffix=suffix)
答案 2 :(得分:2)
为何转换为int
?
x = input()
if x == "1":
print("1st")
elif x == "2":
print("2nd")
elif x == "3":
print("3rd")
else:
print(x+"th")
答案 3 :(得分:1)
我需要我的功能超过9,但没有一个答案正是我需要的。我想出了这个,并认为我会分享。我知道这不是最优雅的解决方案,但它适用于我需要它做的事情。
def ordinal_adjective(n):
if ('%s' % (n,))[-2:] in ['11','12','13']:
return '%sth' % n
elif ('%s' % (n,))[-1] == '1':
return '%sst' % n
elif ('%s' % (n,))[-1] == '2':
return '%snd' % n
elif ('%s' % (n,))[-1] == '3':
return '%srd' % n
else:
return '%sth' % n
x = input()
print ordinal_adjective(x)
答案 4 :(得分:-1)