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

Python计算txt文件平均词长:如何统计所有行的单词总数?

解决统计文件所有行单词数并计算平均词长的问题

原代码的核心问题是words变量每次循环都会被当前行的单词列表覆盖,导致最后只能获取最后一行的单词数。要统计所有行的单词总数,需要新增一个累计变量,同时调整代码逻辑的位置:

修改后的代码

# 使用with语句自动管理文件资源,避免手动关闭
with open("apple.txt", "r") as file:
    total_letters = 0
    total_words = 0  # 新增累计总单词数的变量
    for line in file:
        words = line.split()
        total_words += len(words)  # 每次循环累加当前行的单词数
        for word in words:
            # 直接用isalpha()判断是否为字母,替代ord的数值判断,更简洁
            for letter in word:
                if letter.isalpha():
                    total_letters += 1

# 循环结束后再计算平均词长,确保用的是全局的总字母数和总单词数
average_word_length = total_letters / total_words
print(f"总单词数:{total_words}")
print(f"平均词长:{average_word_length}")

关键修改点

  • 新增total_words变量,初始值为0,每次遍历一行时,将当前行的单词数(len(words))累加到该变量中,最终得到整个文件的单词总数。
  • 将平均词长的计算和结果输出代码移到循环外部,确保使用的是全局累计的total_letters和total_words,而不是最后一行的局部变量。
  • 用with open(...)语法处理文件,自动完成文件关闭操作,避免资源泄漏。
  • 用str.isalpha()方法替代原代码中通过ord()判断字母范围的逻辑,代码更简洁易读。

测试结果

针对你的apple.txt内容:

I ate apples.
How many apples did you eat.

运行修改后的代码会输出:

总单词数:8
平均词长:3.5

(计算说明:总字母数为28,总单词数8,28/8=3.5)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:05:33