程序返回空列表问题:无法找出输入字符串中缺失的字母
问题分析与修复方案
你的代码有两个关键问题导致结果异常:
- return语句位置错误:把
return missing放在了for循环内部,函数执行第一次循环就直接返回,根本没完成后续遍历逻辑。 - 逻辑方向搞反:当前代码是遍历输入字符串,把不在小写字母表里的字符加入missing,这和你要找「输入字符串中未出现的小写字母」的需求完全相反。
修复后的代码如下:
import string def get_missing_letters(s): missing = [] # 将输入字符串转为集合,提升查找效率 s_chars = set(s.lower()) # 若不需要兼容大写输入,可去掉lower() alphabet = string.ascii_lowercase # 遍历完整小写字母表,检查每个字母是否未出现在输入字符串中 for letter in alphabet: if letter not in s_chars: missing.append(letter) return missing print(get_missing_letters("abcdefgpqrstuvwxyz")) # 输出 ['h', 'i', 'j', 'k', 'l', 'm', 'n', 'o']
修复说明:
- 将return移至for循环外,确保遍历完所有字母后再返回结果。
- 切换遍历对象:遍历完整小写字母表,而非输入字符串,匹配需求逻辑。
- 用集合存储输入字符,
in操作的效率远高于列表,适合字符串较长的场景。 - 可选的
lower():若输入可能包含大写字母,转小写后可避免漏判。
内容的提问来源于stack exchange,提问作者feon
相关产品推荐
相关产品推荐

