我在这里没有具体编码的问题,而是更多关于如何在不使用if语句的情况下生成特定变量输出的查询。
为了让它更清楚,这里是一个例子:史密斯先生正在发出5分测验,评分分为5-A,4-B,3-C,2-D,1-E,0- F。创建一个接受测验分数(1-5)作为输入的程序,并打印出相应的等级而不使用if语句。
希望这让我的困境更加清晰。我正在寻找一种方法,在不使用if语句的情况下将等级(A-F)与相应的测验得分(1-5)相关联。我仍然是蟒蛇新手,你可以称我是一个慢学习者,但任何帮助表示赞赏!
答案 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)