Python入门:提取X-DSPAM-Confidence数值免sum函数算平均值
Python习题问题排查与修正
核心问题定位
你的代码存在两处明显逻辑错误:
- 累加变量
add定义在遍历文件行的for循环内部,每次匹配到目标行都会被重置为0,无法完成多数值累计 - 额外创建单元素列表
num1再循环累加属于多余操作,不仅增加代码复杂度,还容易引入逻辑问题
修正后代码(符合题目要求,未使用sum函数)
fname = input("Enter file name: ") fh = open(fname) count = 0 total = 0 # 累加变量放在循环外,仅初始化一次 for line in fh: if not line.startswith("X-DSPAM-Confidence:"): continue count += 1 # 提取数值:按冒号切分取后半段,去除首尾空白后直接转浮点型 num = float(line.split(':', 1)[1].strip()) total += num average = total / count print("Average spam confidence:", average) print("Done")
改动说明
- 累加变量移到循环外部初始化,全程只会赋值一次初始值0,不会每次匹配到新行就重置
- 替换固定位置切片的取值方式为
split切分,无需关心行长度变化也能准确提取数值,兼容性更强 - 去掉无意义的单元素列表和内层循环,直接累加单个浮点数值,逻辑更简洁,符合入门阶段的代码书写规范
运行结果参考
Enter file name: mbox-short.txt Average spam confidence: 0.7507185185185187 Done
内容的提问来源于stack exchange,提问作者GameMaster
相关产品推荐
相关产品推荐

