如何在带哨点值的循环中计算测试分数的最值与平均值?
如何在分数输入循环中计算最小值、最大值和平均值?
嘿,这个需求其实很好实现!咱们可以通过在循环过程中维护几个统计变量来搞定,我给你一步步拆解,再附上代码示例:
核心思路
我们需要在每次用户输入有效分数时,同步更新四个关键变量:
- 最小值:记录目前输入的最小分数
- 最大值:记录目前输入的最大分数
- 总分:累加所有有效分数
- 有效分数个数:统计输入了多少个符合要求的分数
最后用总分除以个数就能得到平均值,还要注意处理「用户直接输入999退出」的边界情况,避免除以零的错误。
具体实现(以Python为例)
# 初始化统计变量:用无穷大/无穷小确保第一个有效分数能覆盖初始值 min_score = float('inf') max_score = float('-inf') total_score = 0 score_count = 0 while True: user_input = input("请输入测试分数(输入999退出):") # 先处理输入格式校验 try: score = int(user_input) if score == 999: print("退出输入程序") break # 分数范围校验 if 0 <= score <= 100: # 更新最小值:如果当前分数比记录的最小值还小,就替换 if score < min_score: min_score = score # 更新最大值:同理,比记录的最大值大就替换 if score > max_score: max_score = score # 累加总分和计数 total_score += score score_count += 1 print(f"已记录分数:{score}") else: print("⚠️ 分数必须在0-100之间,请重新输入!") except ValueError: print("⚠️ 请输入有效的整数分数!") # 循环结束后输出统计结果 if score_count == 0: print("😅 没有输入任何有效分数,无法统计!") else: average_score = total_score / score_count print("\n📊 分数统计结果:") print(f"最小值:{min_score}") print(f"最大值:{max_score}") print(f"平均值:{average_score:.2f}") # 保留两位小数更直观
关键细节说明
- 初始化
min_score为float('inf')(正无穷):这样第一个有效分数肯定比它小,能自动成为初始最小值;同理max_score用负无穷,第一个有效分数会自动成为初始最大值。 - 输入校验放在循环内:每次输入都先检查格式是否为整数,再检查范围,不符合就提示用户重新输入,不影响统计变量。
- 边界处理:如果用户直接输入999,
score_count还是0,这时候要提示没有有效分数,避免计算平均值时出现ZeroDivisionError。
内容的提问来源于stack exchange,提问作者christopherson
相关产品推荐
相关产品推荐

