使用Python numpy计算用户输入区间内大于10的偶数均值问题求助
代码问题排查
- 语法错误1:
sum_even函数体缩进混乱,count定义、return语句均没有对齐到正确的函数缩进层级,运行会直接报错 - 语法错误2:函数定义名为
sum_even,但打印时调用了不存在的function1,命名不匹配 - 逻辑错误1:
range(a, b, 1)是左闭右开区间,上界b不会被纳入遍历范围,比如示例输入的上界16会被漏掉 - 逻辑错误2:缺少「数值大于10」的判断条件,所有偶数都会被纳入计算,和需求不符
- 逻辑错误3:当前只实现了符合条件偶数的总和计算,没有统计符合条件的数值个数,无法得到平均值
- 冗余问题:导入了numpy库但完全没有使用,没有发挥numpy的向量化计算优势
修正方案
方案1:修改原循环逻辑实现
lower = int(float(input('Waiting for input: '))) upper = int(float(input('Waiting for input: '))) def avg_even_gt10(a, b): total = 0 count = 0 # 调整range右边界为b+1,包含上界 for i in range(a, b+1): # 同时判断是偶数、且大于10 if i % 2 == 0 and i > 10: total += i count += 1 # 避免除以0,无符合条件数值时返回0 return total / count if count != 0 else 0 print(f"{avg_even_gt10(lower, upper):.2f}")
测试示例:输入下界8、上界16时,符合条件的偶数为12、14、16,平均值为(12+14+16)/3=14,和预期结果一致。
方案2:使用numpy实现(更简洁高效)
import numpy as np lower = int(float(input('Waiting for input: '))) upper = int(float(input('Waiting for input: '))) # 生成上下界范围内的所有整数 arr = np.arange(lower, upper+1) # 筛选出大于10的偶数 target_arr = arr[(arr > 10) & (arr % 2 == 0)] # 计算平均值,无符合条件值时返回0 avg = target_arr.mean() if len(target_arr) > 0 else 0 print(f"{avg:.2f}")
内容的提问来源于stack exchange,提问作者Sai nathi
相关产品推荐
相关产品推荐

