Python计算1到n奇数平均值代码运行结果错误排查求助
Python计算1~n范围内奇数平均值代码错误修复
问题原因
- 变量名引用错误:代码中存储奇数累加和的变量为
sum1,但计算平均值时错误使用了未定义的sum,实际运行会直接抛出NameError;就算是笔误将sum写为sum1,仍存在第二个逻辑错误。 - 平均值计算逻辑错误:平均值应为奇数总和除以奇数的个数,而非除以输入的正整数k。以输入k=8为例,1~8范围内共有4个奇数,总和为16,正确计算应为16/4=4,原代码误除以总个数8,得到的结果自然不符合预期。
修复后的代码
k = int(input('Enter a positive integer: ')) while k <= 0: print('Please enter a positive integer!! \n') k = int(input('Enter a positive integer: ')) else: b = 1 sum_odd = 0 count_odd = 0 while b <= k: if b % 2 == 1: sum_odd += b count_odd += 1 b += 1 avg = sum_odd / count_odd print(avg)
可选优化方案
可以用更简洁的Python语法实现相同逻辑,减少循环嵌套:
# 输入校验 while True: k = int(input('Enter a positive integer: ')) if k > 0: break print('Please enter a positive integer!! \n') # 直接生成奇数列表计算 odds = [i for i in range(1, k+1) if i%2 == 1] avg = sum(odds)/len(odds) print(avg)
内容的提问来源于stack exchange,提问作者user17203516
相关产品推荐
相关产品推荐

