You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

文本文件每行不含'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)

关键改动说明

  1. 重置计数:把count = 0移到for line in f:循环内部,这样每一行都会从零开始统计,不会继承上一行的计数。
  2. 优化计数方式:不需要遍历单词的每个字符来累加,直接用len(word)获取单词长度,代码更简洁高效。
  3. 补充模块导入:原代码使用了sys.argv但没导入sys模块,运行会抛出NameError,这里补上了必要的导入。

这样修改后,就能得到你预期的逐行统计结果:10 4 1(每行对应一个输出值)。

内容的提问来源于stack exchange,提问作者Python Noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:15:12