文本文件每行不含'e'的单词字符求和异常,如何修正?
问题分析与解决方案
你的代码问题出在计数变量的作用域上:count是在所有行循环外面初始化的,所以它会持续累加所有行的符合条件字符数,而不是每行单独统计。这就是为什么输出是连续递增的数值,而非每行独立的总数。
修正后的代码
import sys # 注意:原代码缺少sys模块导入,运行会报错,这里补上 with open(sys.argv[1], "r") as f: for line in f: count = 0 # 关键:每处理一行就重置计数 words = line.split() for word in words: # 若需要忽略大小写的"E",可以改成 if "e" not in word.lower() if "e" not in word: count += len(word) # 直接用单词长度代替逐个字符累加,更高效 print(count)
关键改动说明
- 重置计数:把
count = 0移到for line in f:循环内部,这样每一行都会从零开始统计,不会继承上一行的计数。 - 优化计数方式:不需要遍历单词的每个字符来累加,直接用
len(word)获取单词长度,代码更简洁高效。 - 补充模块导入:原代码使用了
sys.argv但没导入sys模块,运行会抛出NameError,这里补上了必要的导入。
这样修改后,就能得到你预期的逐行统计结果:10 4 1(每行对应一个输出值)。
内容的提问来源于stack exchange,提问作者Python Noob
相关产品推荐
相关产品推荐

