跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

如何用Python统计输入文本中每个单词的出现频次

本文介绍如何正确统计用户输入的一行文本中每个单词的出现次数,并按原始顺序逐行输出“单词 频次”,重点纠正初学者常见的重复计数与输出逻辑错误。 你的原始代码存在两个关键问题: word_count = each_word.count(x) 在循环外计算 ,导致 word_count 最终只保留最后一个单词的计数结果(即 "mark" 出现 1 次),并被统一打印一次; * `print( each_word, word_count)`** 将所有单词展开后拼接一个数字,完全偏离了“每词一行、带各自频次”的输出格式。 ✅ 正确思路是:对 split() 得到的每个单词 x, 在循环体内即时统计其在整个字符串中的出现次数,并立即打印 。注意——必须基于 原始输入字符串 (而非 each_word 列表)调用 .count(),否则大小写敏感问题(如 "hi" 和 "mark")会被误判(列表中 "hi" 出现 2 次,但 "mark" 是小写,与 "Mark" 不同)。 以下是修正后的完整可运行代码:
phrase = input().strip() # 读入并去除首尾空格 words = phrase.split() for word in words: count = phrase.count(word) # ✅ 在原始字符串上统计,保持大小写原貌 print(f"{word} {count}")
? 运行示例 : 输入:hey hi Mark hi mark 输出:
hey 1 hi 2 Mark 1 hi 2 mark 1
⚠️ 注意事项: AI Word 一款强大的 AI 智能内容创作平台,致力于帮助用户高效生成高质量、原创且符合 SEO 规范的各类文章。 下载 立即学习 “ Python免费学习笔记(深入) ”; 该方法 区分大小写 ("Mark" ≠ "mark"),符合题目样例预期;若需忽略大小写,可统一转为 .lower() 后处理; .count() 对长文本效率较低(时间复杂度 O(n²)),生产环境推荐使用 collections.Counter 配合字典预统计(单次遍历 O(n)),但本题强调“按输入顺序输出”,故直接计数更直观; 不要使用 dict 预存频次再循环输出——这会丢失重复单词的多次出现位置,无法满足“每个词单独一行”的输出要求(如 "hi" 必须输出两次)。 总结:掌握“循环中即时计算 + 即时输出”这一模式,是解决此类顺序敏感型频次统计问题的关键。

相关文章