输入是一个列表,始终为低或大写。在序列中,正确排序时,缺少一个字母。该函数应将缺少的字母作为字符串输出返回。请参阅下面的代码,您会注意到我已经完成了为小写列表计算缺失字母的一半。
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')
任何人都知道如何检查不管字母的情况吗?
答案 0 :(得分:1)
您的规范需要进行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]
答案 1 :(得分:1)
无论是小写还是大写,都应该有效。它甚至可以用于其他连续序列。
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
答案 2 :(得分:0)
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]
答案 3 :(得分:0)
您可以使用字符串模块和字符串查找方法来查找丢失的字母。 哪里
如果字符串中缺少字母/单词,则查找()
方法返回-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
答案 4 :(得分:-2)
这将在连续字符列表中找到丢失的字符,如果没有丢失任何字符,则返回true。
def find_missing_letter(chars):
for i in range(len(chars)-1):
if ord(chars[i+1])!= ord(chars[i])+1:
return chr(ord(chars[i])+1)
return True