Python作业求助:While循环成绩录入及平均分计算语法错误排查
问题排查与修正代码
先给你列原代码里的几个关键问题:
- 变量顺序搞反了:
examNum = examCount这行放在examCount = int(input(...))前面,此时examCount还没定义,直接赋值会触发报错。 - 总分初始化错误:
totalScore = sum(examScore)里的examScore根本没定义,而且sum是用来计算列表这类可迭代对象的和,你还没开始录入成绩,这么写完全无效。 - while循环的else语法错误:Python里while的else是当while条件不成立时执行的代码块,但你把else直接写在while块内的语句下方,缩进和逻辑都不对,属于语法错误。
- print语句语法错误:
print("Your average score is" totalScore)里字符串和变量之间没加逗号或者格式化符号,不符合Python语法要求。 - 缺少成绩累加逻辑:你每次输入
examScore,但没把它加到总分里,最后根本算不出正确的总分和平均分。
修正后的代码如下:
# 先获取要输入的成绩数量 examCount = int(input("How many scores would you like to enter? ")) # 初始化计数器和总分 examNum = 0 totalScore = 0 while examNum < examCount: # 逐个录入成绩并累加 examScore = int(input(f"Input score {examNum + 1}: ")) totalScore += examScore examNum += 1 # 循环结束后计算平均分 averageScore = totalScore / examCount print(f"Your average score is {averageScore}")
修正后的逻辑说明:
- 先获取用户设定的成绩数量,再初始化计数器
examNum为0、总分totalScore为0。 - while循环内,只要计数器没达到设定数量,就继续录入成绩,每录一个就加到总分里,同时计数器加1。
- 循环结束后用总分除以成绩数量得到平均分,最后用格式化字符串输出结果。
内容的提问来源于stack exchange,提问作者McCreepy
相关产品推荐
相关产品推荐

