如何优化Python代码以查找dictionary.txt中含最多"z"字符的单词
问题原因与修复方案
核心错误原因
你遇到的问题是return语句的缩进层级错误,放在了遍历单词的for循环内部,第一次循环执行到return就会直接终止函数,自然只返回文本第一个单词"A"。
正确实现步骤
- 先初始化两个变量,分别记录当前找到的最多z字符数量和对应的单词,初始值可以设为
max_z_count = -1,result_word = "" - 遍历文件内的每一个单词,计算当前单词中
z的出现次数,可通过current_z = word.lower().count('z')实现,加lower()是为了避免大小写差异漏统计大写Z - 对比当前单词的z数量和记录的最大值,如果更大就更新最大值和对应的结果单词
- 等整个for循环遍历完所有单词之后,再执行return返回结果
参考代码
def find_most_z_word(file_path): max_z_count = -1 result_word = "" # 打开文件逐行遍历(假设每行存储一个单词) with open(file_path, 'r', encoding='utf-8') as f: for line in f: # 去除行尾换行符和多余空白 word = line.strip() # 跳过空行 if not word: continue current_z = word.lower().count('z') if current_z > max_z_count: max_z_count = current_z result_word = word # 注意缩进:return要和with open语句对齐,不要放在for循环块内 return result_word # 调用测试 print(find_most_z_word("dictionary.txt"))
如果你需要返回所有含相同最多z字符的单词,可以修改为列表存储结果:
def find_all_most_z_word(file_path): max_z_count = -1 result_words = [] with open(file_path, 'r', encoding='utf-8') as f: for line in f: word = line.strip() if not word: continue current_z = word.lower().count('z') if current_z > max_z_count: max_z_count = current_z result_words = [word] elif current_z == max_z_count: result_words.append(word) return result_words
内容的提问来源于stack exchange,提问作者before_elijah
相关产品推荐
相关产品推荐

