You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在带哨点值的循环中计算测试分数的最值与平均值?

如何在分数输入循环中计算最小值、最大值和平均值?

嘿,这个需求其实很好实现!咱们可以通过在循环过程中维护几个统计变量来搞定,我给你一步步拆解,再附上代码示例:

核心思路

我们需要在每次用户输入有效分数时,同步更新四个关键变量:

  • 最小值:记录目前输入的最小分数
  • 最大值:记录目前输入的最大分数
  • 总分:累加所有有效分数
  • 有效分数个数:统计输入了多少个符合要求的分数

最后用总分除以个数就能得到平均值,还要注意处理「用户直接输入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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:24:17