嗨我的程序有问题,我尝试检查字母表中的哪些字母没有出现在列表中,不幸的是它返回空列表我不知道为什么
试了很多方法还是不行。。。
import string
def get_missing_letters(s):
missing =[]
alphabet = list(string.ascii_lowercase)
s = list(s)
for letter in s:
if letter not in alphabet:
missing.append(letter)
return missing
print(get_missing_letters("abcdefgpqrstuvwxyz"))
你应该用另一种方式检查它。
for letter in alphabet:
if letter not in s:
missing.append(letter)
并让你的 return 语句脱离循环。
你有两个问题,
return
发生在第一次迭代之后,你实际上是在检查你的字符串中的字母是否存在于 ascii_lowercase
而不是相反的
def get_missing_letters(s):
missing = []
s = list(s)
for letter in list(string.ascii_lowercase):
if letter not in s:
missing.append(letter)
return missing
print(get_missing_letters("abcdefgpqrstuvwxyz"))
# ['h', 'i', 'j', 'k', 'l', 'm', 'n', 'o']
找到差异的另一种方法是使用
set
def get_missing_letters(s):
return set(string.ascii_lowercase).difference(s)
# or
return set(string.ascii_lowercase) - set(s)
print(get_missing_letters("abcdefgpqrstuvwxyz"))
# {'j', 'n', 'k', 'l', 'i', 'm', 'o', 'h'}
如果顺序对你很重要,你可以排序
def get_missing_letters(s):
missing = set(string.ascii_lowercase).difference(s)
return sorted(missing)
print(get_missing_letters("abcdefgpqrstuvwxyz"))
# ['h', 'i', 'j', 'k', 'l', 'm', 'n', 'o']