查找列表中丢失的字母(小写或大写,不包括在内)

Find Missing Letter in List (Lowercase or Uppercase, Exclusively)

输入是一个列表,大小写一致。在序列中,当正确排序时,缺少一个字母。该函数应该 return 丢失的字母作为字符串输出。请参阅下面的代码,您会注意到我已经完成了一半,只为小写列表计算了丢失的字母。

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 处更改:

  1. 通过检查 chars 包含的字母类型来确定您的字符集。

  2. 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


import string

def find_missing (txt):
    """Takes string or other type of iterable containing letters.
    Returns a list of all letters that aren't present in the input string/iterable.
    Missing letters are returned as lower case.
    """
    txt = (x.lower() for x in txt if x.isalpha()) # Generator object
    found = dict.fromkeys(string.ascii_lowercase, 0)
    for x in txt: found[x] = 1
    return [x for x in found if found[x]==0]

您可以使用字符串模块和字符串查找方法来定位丢失的字母。 其中

find()

方法 return -1 如果 letter/word 在字符串中丢失。

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