Python 查找列表中缺少的字母(仅限小写或大写)
输入是一个列表,始终为小写或大写。在序列中,如果排序正确,则缺少一个字母。函数应将缺少的字母作为字符串输出返回。请参阅下面的代码,您会注意到我已经计算了小写列表中缺少的字母,计算完成了一半Python 查找列表中缺少的字母(仅限小写或大写),python,alphabet,Python,Alphabet,输入是一个列表,始终为小写或大写。在序列中,如果排序正确,则缺少一个字母。函数应将缺少的字母作为字符串输出返回。请参阅下面的代码,您会注意到我已经计算了小写列表中缺少的字母,计算完成了一半 import string def find_missing_letter(chars): for letter in string.ascii_lowercase: if letter not in chars: return letter[0] 测试示例
import string
def find_missing_letter(chars):
for letter in string.ascii_lowercase:
if letter not in chars:
return letter[0]
测试示例:
test.assert_equals(find_missing_letter(['a','b','c','d','f']), 'e')
test.assert_equals(find_missing_letter(['O','Q','R','S']), 'P')
无论字母大小写,任何人都知道如何检查???2您的规范需要更改:
chars
包含的字母类型来确定您的字符集chars
开头的字符开始检查-这样检查b、c、e将导致d
而不是a
def find_missing_letter(chars):
charset = string.ascii_lowercase if chars[0] >= 'a' else string.ascii_uppercase
for letter in charset[charset.index(chars[0]):]:
if letter not in chars:
return letter[0]
您的规格需要进行2项更改:
chars
包含的字母类型来确定您的字符集chars
开头的字符开始检查-这样检查b、c、e将导致d
而不是a
def find_missing_letter(chars):
charset = string.ascii_lowercase if chars[0] >= 'a' else string.ascii_uppercase
for letter in charset[charset.index(chars[0]):]:
if letter not in chars:
return letter[0]
无论大小写,这都应该有效。它甚至可以用于其他连续序列
def missing_elements(L):
start, end = L[0], L[-1]
return sorted(set(range(start, end + 1)).difference(L))
def find_missing_letter(chars):
numbers = list(map(ord, chars))
n = missing_elements(numbers)
return chr(n[0])
测试示例:
chars = ['a','b', 'd']
print(find_missing_letter(chars))
输出:
c
无论大小写,这都应该有效。它甚至可以用于其他连续序列
def missing_elements(L):
start, end = L[0], L[-1]
return sorted(set(range(start, end + 1)).difference(L))
def find_missing_letter(chars):
numbers = list(map(ord, chars))
n = missing_elements(numbers)
return chr(n[0])
测试示例:
chars = ['a','b', 'd']
print(find_missing_letter(chars))
输出:
c
您可以使用字符串模块和字符串查找方法查找丢失的字母。 在哪里 查找() 如果字符串中缺少字母/单词,则方法返回-1
import string
input_str=raw_input()
output_str=""
for letter in string.letters:
if input_str.find(letter) ==-1:
output_str=output_str+letter
print output_str
您可以使用字符串模块和字符串查找方法查找丢失的字母。 在哪里 查找() 如果字符串中缺少字母/单词,则方法返回-1
import string
input_str=raw_input()
output_str=""
for letter in string.letters:
if input_str.find(letter) ==-1:
output_str=output_str+letter
print output_str
你还没有完成一半-这对小写也不合适。你还没有完成一半-这对小写也不合适。这使得只有一个通过所有字符+一个半通过所有ascii。您的方式将通过所有ascii和所有字符。每次字母不在字符中时,都会遍历整个字符,并且总是遍历其中的一些字符。我说的是接线员。当您在中的列表([])中说“”时,将迭代iterable以检查“”是否在其中。因此,对于较大的字符,我的代码应该快一点,因为字母可能会重复很多次。这使得只有一个字符通过所有字符+一个半通过所有ascii。您的方式将通过所有ascii和所有字符。每次字母不在字符中时,都会遍历整个字符,并且总是遍历其中的一些字符。我说的是接线员。当您在中的列表([])中说“”时,将迭代iterable以检查“”是否在其中。因此,对于较大的字符,我的代码应该快一点,因为字母可能会重复很多次。+1!好把戏。但是你为什么用数字呢?你可以直接使用字母。set()不限于数字。这是因为我使用range来获取所有连续值。我很感谢你的投票是的,但您不必使用range()。我说得不对。另外,您确定这样包含所有小写和大写字母吗?您使用了“开始”和“结束”,但如果输入未排序怎么办?如果按升序排序呢?顺便说一句:我非常重视创造力。因此它是+1。此外,您的代码比原始代码有可能提高速度。+1!好把戏。但是你为什么用数字呢?你可以直接使用字母。set()不限于数字。这是因为我使用range来获取所有连续值。我很感谢你的投票是的,但您不必使用range()。我说得不对。另外,您确定这样包含所有小写和大写字母吗?您使用了“开始”和“结束”,但如果输入未排序怎么办?如果按升序排序呢?顺便说一句:我非常重视创造力。因此它是+1。此外,与原始代码相比,您的代码有可能提高速度。