生成多个变量输出而不使用if语句

时间:2012-05-23 06:36:56

标签: python string variables if-statement int

我在这里没有具体编码的问题,而是更多关于如何在不使用if语句的情况下生成特定变量输出的查询。

为了让它更清楚,这里是一个例子:史密斯先生正在发出5分测验,评分分为5-A,4-B,3-C,2-D,1-E,0- F。创建一个接受测验分数(1-5)作为输入的程序,并打印出相应的等级而不使用if语句。

希望这让我的困境更加清晰。我正在寻找一种方法,在不使用if语句的情况下将等级(A-F)与相应的测验得分(1-5)相关联。我仍然是蟒蛇新手,你可以称我是一个慢学习者,但任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:6)

最直接,最灵活的方法是使用字典

>>> score_grade_mapping = {6: 'A+', 5: 'A', 4: 'B', 3: 'C', 2: 'D', 1: 'E', 0: 'F'}
>>> score_grade_mapping[4]
'B'
>>> score_grade_mapping[6]
'A+'

虽然它只是一个数字序列,从零开始,映射到单个字母,但您可以使用字符串索引更有效地(尽管不那么明显)使用字符串。

>>> score_grade_mapping = 'FEDCBA'
>>> score_grade_mapping[4]
'B'

如果你需要不止一个字母,但仍然有一系列从零开始的分数,你可以使用列表(可变)或元组(不可变,因此,使用索引

,对于不改变它的事情更有效率
>>> score_grade_mapping = 'F', 'E', 'D', 'C', 'B', 'A', 'A+'
>>> score_grade_mapping[4]
'B'
>>> score_grade_mapping[6]
'A+'

答案 1 :(得分:3)

您可以使用:

'FEDCBA'[score]

这可以通过获取字符串score'FEDCBA'位置的字符来实现:F位于0位置,E位于1位置等等。

例如:

In [1]: 'FEDCBA'[0]
Out[1]: 'F'

In [2]: 'FEDCBA'[5]
Out[2]: 'A'

答案 2 :(得分:2)

使用字典:

dic={5:'A',4:'B',3:'C',2:'D',1:'E',0:'F'}
score=int(input())
grade=dic.get(score,'invalid input')
print(grade)