如何修复统计三门考试达标成绩总次数的Python代码
问题分析与修复方案
你的版本1代码存在两个关键问题,导致结果不符合预期:
- 逻辑判断错误:版本1使用
and逻辑运算符,只有当同一学生三门考试成绩都≥75时才会给count加1,这统计的是「三门全达标学生的数量」,而非「所有达标次数的总和」。 - 变量名拼写错误:定义的数组是
technolog,但判断时写成了technology,这会导致运行时抛出NameError(你给出的输出为1,应该是编写时的笔误)。
修复后的版本1代码
literacy = [42,72,80,82,76] numeracy = [55,70,75,79,48] technolog = [77,64,55,82,52] count = 0 for counter in range(len(literacy)): if literacy[counter] >= 75: count += 1 if numeracy[counter] >= 75: count += 1 if technolog[counter] >= 75: count += 1 print(count)
更简洁的实现方式
也可以直接统计每门课的达标人数再求和,避免循环嵌套:
literacy = [42,72,80,82,76] numeracy = [55,70,75,79,48] technolog = [77,64,55,82,52] count = sum(1 for x in literacy if x >=75) + sum(1 for x in numeracy if x >=75) + sum(1 for x in technolog if x >=75) print(count)
修复说明
- 把原有的单个
and判断拆成三个独立的if判断,每满足一门课的达标条件就给count加1,实现累计所有达标次数的需求。 - 修正变量名拼写错误,确保数组名称前后一致。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

