我正在尝试编写一个程序,在字母顺序的字母数组中查找丢失的字母。例如[a、b、c、d、f]缺失=>;'e'。在
现在我有这个:
def find_missing_letter(chars):
# Creates variables of complete alphabet.
alphabetLower = list(string.ascii_lowercase)
enumeratedLower = []
alphabetUpper = list(string.ascii_uppercase)
enumeratedUpper = []
# Checks if the function has to enumerate the upper- or lowercase alphabet.
if(chars[0].islower()):
for c, value in enumerate(alphabetLower, 1):
enumeratedLower.append([c, value])
else:
for c, value in enumerate(alphabetUpper, 1):
enumeratedUpper.append([c, value])
# Checks at what letter the characters begin.
# After that it checks if the following letters are equal to eachother.
if(chars[0].isupper()):
for x in range(1, 26):
print enumeratedUpper[x][1]
print 'char:' + chars[0]
if(chars[0] == enumeratedUpper[x][1]):
for i in range(enumeratedUpper[x][0], len(chars)):
if(chars[i] != alphabetUpper[i]):
return alphabetUpper[i]
else:
for x in range(1, 26):
print enumeratedLower[x][1]
print 'char:' + chars[0]
if(chars[0] == enumeratedLower[x][1]):
for i in range(enumeratedLower[x][0], len(chars)):
if(chars[i] != alphabetLower[i]):
return alphabetLower[i]
但是,if语句
^{pr2}$以及
if(chars[0] == enumeratedLower[x][1]):
因为某种原因没有工作。此语句的原因是,给定的字符数组(chars)可以从随机字母开始(不必以“a”或“a”开头)。我把print语句放在那里看看哪里出了问题,结果是:
b
char:o
c
char:o
d
char:o
e
char:o
f
char:o
g
char:o
h
char:o
i
char:o
j
char:o
k
char:o
l
char:o
m
char:o
n
char:o
o
char:o
p
char:o
q
char:o
r
char:o
s
char:o
t
char:o
u
char:o
v
char:o
w
char:o
x
char:o
y
char:o
z
char:o
你的方法似乎太复杂了。只需使用
map
和ord
将字符列表转换为num列表,然后枚举结果列表以找到第一个丢失的数字,使用chr
将其转换回char你有点过于复杂了。 不需要分别处理大小写字母。 另外,您不必使用
enumerate
只需使用index
方法来查找 字符开始的地方。在样本输出:
^{pr2}$您可以使用生成器表达式搜索不包含字符的字母,然后根据需要按字母顺序对它们进行排序
相关问题 更多 >
编程相关推荐