3

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

为了更清楚,这里有一个例子:史密斯先生给出了 5 分测验,按 5-A、4-B、3-C、2-D、1-E、0-F 的等级分级。创建一个程序,该程序接受测验分数 (1-5) 作为输入,并在不使用 if 语句的情况下打印出相应的成绩。

所以希望这能让我的困境更加清晰。我正在寻找一种方法来将成绩 (AF) 与相应的测验分数 (1-5) 相关联,而不使用 if 语句。我对 python 还是很陌生,你可以称我为一个缓慢的学习者,但感谢任何帮助!

4

3 回答 3

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+'
于 2012-05-23T06:49:27.047 回答
3

你可以使用:

'FEDCBA'[score]

这通过在score字符串中的位置获取字符来工作'FEDCBA'F在位置0E在位置1等等。

例如:

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

In [2]: 'FEDCBA'[5]
Out[2]: 'A'
于 2012-05-23T06:41:39.717 回答
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)
于 2012-05-23T06:48:35.627 回答