目标是建立一个程序,将分数从“0到1”系统转换为“F到a”系统:
score >= 0.9
将打印“A”score >= 0.8
将打印“B”这是构建它的方法,它在程序中起作用,但它有点重复:
if scr >= 0.9:
print('A')
elif scr >= 0.8:
print('B')
elif scr >= 0.7:
print('C')
elif scr >= 0.6:
print('D')
else:
print('F')
我想知道是否有一种方法可以构建一个函数,这样复合语句就不会 重复
我是一个完全的初学者,但我会:
def convertgrade(scr, numgrd, ltrgrd):
if scr >= numgrd:
return ltrgrd
if scr < numgrd:
return ltrgrd
可能吗
这里的意图是,稍后我们可以通过只传递scr、numbergrade和letter grade作为参数来调用它:
convertgrade(scr, 0.9, 'A')
convertgrade(scr, 0.8, 'B')
convertgrade(scr, 0.7, 'C')
convertgrade(scr, 0.6, 'D')
convertgrade(scr, 0.6, 'F')
如果可以通过更少的论点,那就更好了
您可以按照以下思路做一些事情:
这将使用^{} 和生成器上的默认参数,覆盖由^{} 创建的分数等级对。它实际上与循环方法完全相同
您可以使用bisect模块执行数字表查找:
您可以为每个等级指定阈值:
相关问题 更多 >
编程相关推荐