3

我正在在线学习 Python 入门课程,并希望更有效地解决这个问题。

单词 1st, 2nd, 3rd, 4th, 5th, 6th, 7th, 8th, 9th 称为序数形容词。编写一个程序,从输入中读取 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")

我无法弄清楚如何用四行更有效地编写它。是否涉及列表?他们还没有教过列表或数组。

4

5 回答 5

8
x = int(input())
if x == 1:
   print("1st")
elif x == 2:
   print("2nd")
elif x == 3:
   print("3rd")
else:
   print(str(x)+"th")
于 2013-09-09T06:39:41.477 回答
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)
于 2013-09-09T06:39:50.620 回答
2

为什么要转换成int

x = input()
if x == "1":
    print("1st")
elif x == "2":
    print("2nd")
elif x == "3":
    print("3rd")
else:
    print(x+"th")
于 2013-09-09T06:43:22.037 回答
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)
于 2013-10-16T19:02:33.183 回答
-1

你不能在 python 中做 switch case 语句,但你可以使用这些例子以不同的方式来做,没有必要更好:

于 2013-09-09T06:40:43.827 回答