Python逻辑 - 如果是elif语句,则简化/更有效

时间:2013-09-09 06:35:34

标签: python if-statement

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")

我无法弄清楚如何在四行中更有效地写出来。它涉及清单吗?他们还没有教过列表或数组。

5 个答案:

答案 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)

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