这是我写的pangram的函数。
alpha[num]
由于某种原因需要a,c,e,g
等,而不是a,b,c,d,e
等。
def ispangram(str1,alphabet=string.ascii_lowercase):
alpha = []
alpha += alphabet
str1 = list(str1)
for num in range(0,25):
print num
print alpha[num]
for equal in str1:
print equal
if alpha[num] == equal:
alpha.pop(num)
print alpha
break
else:
continue
if alpha == none:
print 'true'
else:
print 'false'
答案 0 :(得分:2)
你在迭代它时修改alphabet
,这导致了你的失误。
但是,这段代码可以大大简化,同时提高性能。而不是双重迭代,将您的字母保存到set
,并迭代字符串,删除您遇到的每个字符(set
中的O(1)操作)。当您完成迭代后,如果set
为空,则表示您已经遇到字母表中的每个字母,这使得该字符串变为pangram:
def ispangram(str1, alphabet = string.ascii_lowercase):
alpha = set(alphabet)
for ch in str1:
if ch in alpha:
alpha.remove(ch)
return len(alpha) == 0
修改强>
实际上,更优雅的是,您可以将两个字符串转换为set
并减去它们:
def ispangram(str1, alphabet = string.ascii_lowercase):
alpha = set(alphabet)
alpha -= set(str1)
return len(alpha) == 0
或者,作为oneliner:
def ispangram(str1, alphabet = string.ascii_lowercase):
return len(set(alphabet) - set(str1)) == 0