首页 > 解决方案 > python的缺失字母方法

问题描述

我有下面的代码,但它没有按预期工作,我看不出哪里出错了,我使用的是 Python 3。该missing_letters方法没有按预期工作,因为第二个输出错误,我需要它来输入并使用字母字符串作为比较返回丢失的字母

alphabet = "abcdefghijklmnopqrstuvwxyz"   

test_miss = ["zzz", "subdermatoglyphic", "the quick brown fox jumps over the lazy dog"] 

def missing_letters(string):
    compare = histogram(string) 
    for key in sorted(compare): 
        if key in alphabet: 
            result = alphabet.replace(key,'') 
            return result # print result
        else:
            return None
   
for letters in test_miss: 
    if missing_letters(letters) == None:
        print(letters, 'uses all the letters')   
    else:
        print(letters , 'is missing letters', missing_letters(letters))

输出:

zzz is missing letters abcdefghijklmnopqrstuvwxy                                                                               
subdermatoglyphic is missing letters bcdefghijklmnopqrstuvwxyz                                                                 
the quick brown fox jumps over the lazy dog uses all the letters

标签: pythonpython-3.x

解决方案


您不需要计算字母的数量,您可以直接使用一组(输入中的每个字母只会出现一次string)。一旦你有了那个集合,你可以从字母表中减去这个集合,你最终会得到一个包含缺失字母的集合:

from string import ascii_lowercase

alphabet = set(ascii_lowercase)

def missing_letters(string):
    return alphabet - set(string.lower())

print(missing_letters("abcdefghijklmnopqrstuv"))

会输出{'w', 'y', 'x', 'z'}。请注意,这ascii_lowercase只是一个包含所有小写字母的字符串。


推荐阅读