Python评分平均值计算错误求助:仅用最后一个数值除以5
Python评分收集程序问题修复:平均值计算错误与输入验证逻辑问题
问题分析
- 平均值计算错误:你当前用最后一次输入的
rating除以5得到平均值,正确逻辑应该是用所有有效评分的总和total除以评分次数ASK_COUNT。 - 输入验证顺序错误:现有代码先把输入的评分加到总和里,再验证合法性。如果用户输入错误值,后续修正的评分不会被加入总和,导致总和计算偏差。必须先验证输入有效,再将其加入总和。
修正后的代码
def main(): ASK_COUNT = 5 total = 0 for _ in range(ASK_COUNT): # 先获取输入并验证合法性 rating = float(input('Please enter the critics score between 0 and 10: ')) while rating <= 0 or rating > 10.0: print('ERROR: Please enter a score between 0 and 10') rating = float(input('Enter a correct score: ')) # 验证通过后再加入总和 total += rating # 用总和除以次数计算正确平均值 average_rating = total / ASK_COUNT print(average_rating) determine_stars(average_rating) def determine_stars(average): if 9.0 <= average <= 10.0: print('9.0 - 10.0: *****') elif 8.0 <= average <= 8.9: print('8.0 - 8.9: ****') elif 7.0 <= average <= 7.9: print('7.0 – 7.9: ***') elif 6.0 <= average <= 6.9: print('6.0 – 6.9: **') elif 5.0 <= average <= 5.9: print('5.0 – 5.9: *') else: print('Below 5.0 No stars') main()
关键改动说明
- 调整输入验证顺序:先循环验证输入的评分是否在0-10区间内,确认有效后再将其加入
total总和,彻底避免错误值混入计算。 - 修正平均值计算逻辑:将
average_rating = rating / 5改为average_rating = total / ASK_COUNT,用所有有效评分的总和除以次数得到正确平均值。 - 简化条件判断写法:把
average >= 9.0 and average <=10.0简化为9.0 <= average <= 10.0,符合Python语法习惯,代码更简洁易读。
内容的提问来源于stack exchange,提问作者madimonti
相关产品推荐
相关产品推荐

