def checkGrade(raw):
''' (int) -> object (i.e., int OR str)
Assign grade from raw score
>>> checkGrade(74)
3
>>> checkGrade(82)
4
>>> checkGrade(-5)
'Error, raw score exceed min score'
>>> checkGrade(210)
'Error, raw score exceed max score'
'''
if raw>100:
score = "Error, raw score exceed max score"
elif raw>80:
score = 4.00
elif raw>70:
score = 3.00
elif raw>60:
score = 2.00
elif raw>50:
score = 1.00
elif raw>0:
score = 0
else:
score = "Error, raw score exceed min score"
return score
现在我想做这样的事情(显示在docstring中):
^{pr2}$原始标记输入在一个由空格分隔的字符串中。如何使用checkGrade()
函数从这样的输入计算GPA?我试过了:
map(int, s.split())
但它不起作用。在
编辑以添加新需求
如果我想把所有的输入都改成像calGPA("A B C D F")
而不是calGPA("80 70 63 55 40")
,如果输入包含除“A”、“B”、“C”、“D”、“F”之外的任何内容,比如calGPA("A C B Z S")
,那么输出应该是“Error”。如果一个元素不是“A”、“B”、“C”、“D”、“F”,我该怎么做才能得到“Error”?在
CalGPA(int(x) for x in s.split())
将起作用。在您需要分割包含原始标记的字符串,然后使用
checkGrade
函数来获取该原始标记的分数。试试这个:输出:
^{pr2}$编辑以反映您的新要求
p.S.:编辑问题使当前接受的答案无效是不允许并且非常不鼓励。
只需将字符串中的所有项转换为整数,然后将该函数应用于每个浇铸的数字,如下所示
相关问题 更多 >
编程相关推荐