我试图编写一个返回分数平均分的函数,但我的语法显然不对。有什么建议吗?
average = sum(first_score, second_score, third_score, fourth_score, fifth_score)
if average >= 90 or <= 100:
print('A')
elif average >=80 or <= 90:
print('B')
elif average >= 70 or <= 79:
print('C')
elif average >= 60 or <= 69:
print('D')
else:
print('F')
答案 0 :(得分:5)
首先,您的条件必须是and
s,而不是or
s
if 100 >= average >= 90: # same as if 100 >= average and average >= 90
print('A')
elif 89 >= average >=80:
print('B')
elif 79 >= average >= 70:
print('C')
elif 69 >= average >= 60:
print('D')
else:
print('F')
答案 1 :(得分:4)
if 90<= average: return 'A'
elif 80 <= average: return 'b'
你不需要检查上限...因为在我们已经建立的线路上它不到90
答案 2 :(得分:3)
首先,语法错误。如果要使用and
和or
等布尔运算对其进行测试,则需要使子表达式完全自包含:
if average >= 90 or average <= 100:
# ^^^^^^^
其次,您正在使用错误的布尔运算。考虑一下您可以测试的可能值:
>=90(a) <=100(b) a or b
89 F T T < 90
90 T T T 90
95 T T T > 90 and <100
100 T T T 100
101 T F T >100
这些or
陈述中的每一个都是真的(如果它们被执行 - 当然,它们不会,因为第一个将始终触发)。这里使用的正确布尔操作是and
:
if average >= 90 and average <= 100:
# ^^^
第三,您的范围实际上会重叠,例如90
范围内的A
和B
范围内的值if average >= 90 and average < 100:
# ^
。你应该使一端是独占的而另一端是包容性的,例如:
elif
哪一端是包容性的,取决于你的需求,我已经把它变得更容易对学生: - )
最后,由于您使用的是if/elif
,因此您无需检查范围的两端。事实上,您已经在之前的 95
语句中评估了一端,这意味着您认为这是正确的。换句话说,查看下面的代码,值if average >= 90: # 90 to infinity
print('A')
elif average >= 80: # 80 to 89.999...
print('B')
elif average >= 70: # 70 to 79.999...
print('C')
elif average >= 60: # 60 to 69.999...
print('D')
else:
print('F') # -infinity to 59.999...
将永远不会触发第二个条件,尽管它是真的,因为它会已经触发了第一个条件:
sum
作为附录,您可能希望看到的另一件事是,您似乎只是总结得分以获得平均值(并且语法不正确)因为0
想要一个可迭代的列表)。如果这些分数是百分比,您可能需要将总和除以5以将其缩放回百分比,以免最终得到500
和average = (first + second + third + fourth + fifth) / 5
之间的数字,例如简单:
scores = (first, second, third, fourth, fifth)
average = sum (scores) / len (scores)
或更广义的:
{{1}}
如果您的分数是二十分,或者有一些其他数学关系会导致一个简单的总和返回一个百分比,您可以放心地忽略这个附录。
答案 3 :(得分:1)
首先,sum
总计一次迭代。所以,你需要给它一个:
# Note the extra parenthesis
average = sum((first_score, second_score, third_score, fourth_score, fifth_score))
其次,你不能那样使用or
。相反,你应该像这样链接比较:
if 90 <= average <= 100:
第三,你错过else
之后的冒号。
最后,我想说你的平均值公式是错误的。一组数字的平均值是通过数字之和除以数字的数量来计算的。
以下是该脚本的固定版本:
scores = (first_score, second_score, third_score, fourth_score, fifth_score)
average = sum(scores)/len(scores)
if 89 < average < 101:
print('A')
elif 79 < average < 90:
print('B')
elif 69 < average < 80:
print('C')
elif 59 < average < 70:
print('D')
else:
print('F')
此外,我稍微调整了数字,以便我可以使用<
代替>=
。我这样做是因为前者需要较少的语法。