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
现在我想要做这样的事情(在文档字符串中):如何计算Python 2.7中以空格分隔的多个输入?
def calGPA(n):
''' (str) -> float
Take all the raw scores, limited to 10 subjects, and
calculate GPA. Raw scores must be in range of 0 - 100.
>>> calGPA("77 45 77 55 87")
2.2
>>> calGPA("66 67 45 89")
2.0
>>> calGPA("87 91 84 89")
4.0
>>> calGPA("87 91 84 103")
'Error'
>>> calGPA("77 45 77 55 87 21 35 65 98 12 23 45")
'Error'
'''
原始标记输入是用空格分隔的字符串。我如何使用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")
,则输出应为”错误“。如果元素不是“A”,“B”,“C”,“D”,“F”之一,我应该怎么做才能得到“错误”?
请格式化您的代码,并给出比“不行”更好的错误说明。 – timgeb
使用'raws'作为参数名称而不是'raw'。然后,为map(int,raws.split()):raw创建一个'for'循环:'。缩进代码的其余部分,使其位于'for'循环中。 – zondo
我不认为在这种情况下使用'raw'作为变量名是一个问题。 –