Python求1到指定数平均值程序及追踪表编写,代码报错求助
问题排查与修正方案
错误点分析
- 变量大小写冲突:Python是大小写敏感语言,你定义了
Sum=0,但循环中使用的是小写sum,这是一个未初始化的新变量,会触发UnboundLocalError。另外sum是Python内置函数,不建议用作自定义变量名,换成total更安全。 - 循环范围错误:
range(1, Range)是左闭右开区间,只会遍历到Range-1,无法包含你输入的目标数字,需要改为range(1, Range+1)才能覆盖1到目标数字的所有整数。 - 平均值计算逻辑错误:平均值应该是总和除以数字的总个数(即你输入的
Range),而不是最后一次循环的i值,否则结果会偏离正确值。
修正后的代码
target_num = int(input("请输入目标数字: ")) total = 0 print("迭代追踪表:") print("迭代次数 | 当前i值 | 当前总和") print("---------------------------") for idx, i in enumerate(range(1, target_num + 1), 1): total += i print(f"{idx:^9} | {i:^8} | {total:^10}") average = total / target_num print(f"\n1到{target_num}的平均值为: {average}")
代码说明
- 改用
target_num替代Range,用total替代Sum,变量名更直观且避免与内置函数冲突。 - 使用
enumerate记录迭代次数,同时打印每次循环的i值和当前总和,生成清晰的追踪表。 - 平均值计算采用
总和 / 数字总数的正确逻辑,确保结果准确。
示例运行(输入5时)
请输入目标数字: 5 迭代追踪表: 迭代次数 | 当前i值 | 当前总和 --------------------------- 1 | 1 | 1 2 | 2 | 3 3 | 3 | 6 4 | 4 | 10 5 | 5 | 15 1到5的平均值为: 3.0
内容的提问来源于stack exchange,提问作者Mystery Fear
相关产品推荐
相关产品推荐

