Python实现:读取用户输入整数并计算去最值后的平均值
计算去除最大最小值后的平均值问题解决
需求说明
当前程序仅能计算基础平均值,需要补充最大值、最小值的处理逻辑,具体要求:
- 持续读取用户输入的整数,直到输入
-1停止 - 若输入的有效数值数量≥3,计算并输出去除最大值和最小值后的平均值(总和扣除最大、最小值后,除以剩余数值的数量)
- 若有效数值数量<3,不输出任何内容
现有代码
value = int(input("Value: ")) count = 0 sum = 0 max = 0 min = 0 while value != -1: sum += value count += 1 value = int(input("Value: ")) if count >= 3: average = sum / count print ("Middle average =", average - max - min)
修改后的代码
value = int(input("Value: ")) count = 0 sum_total = 0 max_val = None min_val = None while value != -1: sum_total += value count += 1 # 更新最大值 if max_val is None or value > max_val: max_val = value # 更新最小值 if min_val is None or value < min_val: min_val = value value = int(input("Value: ")) if count >= 3: middle_average = (sum_total - max_val - min_val) / (count - 2) print(f"Middle average = {middle_average}")
关键修改点
- 变量名优化:将
sum改为sum_total(避免覆盖Python内置sum()函数),max/min改为max_val/min_val(避免覆盖内置max()/min()函数) - 初始值修正:把
max_val和min_val初始化为None,可以正确处理输入负数的场景(原代码初始为0会导致负数输入时最大值/最小值判断错误) - 循环内更新最值:每次输入有效数值时,判断并更新当前的最大值和最小值:
- 首次输入时直接赋值
- 后续输入时与当前最值比较,符合条件则更新
- 平均值计算修正:正确逻辑为
(总和 - 最大值 - 最小值) / (总数 - 2),原代码的average - max - min是错误的计算方式
内容的提问来源于stack exchange,提问作者cs010101111000
相关产品推荐
相关产品推荐

