Python单词计数程序中列表转字典不生效,如何排查修复?
问题根因
- 多余调用
Convert函数:word_count函数已经返回了符合要求的统计字典,你编写的Convert函数会将字典的键两两配对为新的键值对,直接破坏了原有正确的统计结果 - 未处理大小写:预期输出中所有单词统一为小写,原代码未将输入单词转小写,会导致
Well和well、I'm和i'm被识别为不同单词 - 多行文本拼接遗漏空格:将多行输入拼接为单字符串时没有在行间加空格,会导致前一行末尾单词和后一行开头单词连在一起,拆分错误
修复方案
直接删除无用的Convert函数调用,补充单词小写转换逻辑,拼接多行文本时加入空格分隔即可。
修正后完整代码
def word_count(input_str): counts = dict() words = input_str.split() for word in words: # 统一转为小写匹配预期输出规则 word_lower = word.lower() if word_lower in counts: counts[word_lower] += 1 else: counts[word_lower] = 1 return counts def listToString(s): # 拼接行时加入空格分隔,避免单词粘连 return " ".join(s) def main(): print("Enter rows of text for word counting. Empty row to quit.") user_values = [] prompt = "" line = input(prompt) while line: user_values.append(line) line = input(prompt) user_str = listToString(user_values) user_count = word_count(user_str) for k, v in sorted(user_count.items()): print(f"{k} : {v} times") if __name__ == "__main__": main()
内容的提问来源于stack exchange,提问作者user17018543
相关产品推荐
相关产品推荐

