Python读取文件统计高频单词代码错误修复:输出结果异常
问题分析与修复
你的代码核心问题是错误地将变量名用引号包裹,变成了字符串字面量,导致计数逻辑完全失效:
word_file.count("y")实际是统计字符串"y"在列表中的出现次数,而非变量y对应的当前单词word_file.count("wanted_word")同理,是统计字符串"wanted_word"的次数,而非wanted_word变量存储的目标单词
这会让循环里的条件判断几乎永远不成立(除非文件里恰好有大量"y"或"wanted_word"),最终wanted_word会被循环的最后一个y(即文件最后一个单词)覆盖,所以输出结果错误。
修复方案1:修正原代码的变量引用错误
只需去掉引号,直接使用变量名即可:
with open('python.txt', 'r') as python_file: word_file = python_file.read().split() wanted_word = word_file[0] for y in word_file: # 直接遍历单词,不用索引更简洁 if word_file.count(y) > word_file.count(wanted_word): wanted_word = y print(wanted_word)
不过这种方式每次count()都会遍历整个列表,大文件场景下效率偏低,更推荐下面的优化方案。
修复方案2:用字典统计单词出现次数(高效版)
先遍历一次列表统计每个单词的次数,再找出次数最多的单词,时间复杂度更低:
with open('python.txt', 'r') as python_file: word_file = python_file.read().split() word_counts = {} for word in word_file: word_counts[word] = word_counts.get(word, 0) + 1 # 题目说明次数唯一,无需处理并列情况 wanted_word = max(word_counts, key=word_counts.get) print(wanted_word)
内容的提问来源于stack exchange,提问作者kristen0302
相关产品推荐
相关产品推荐

