什么是全字母句?
全字母句是指包含有字母表中所有字母并且言之成义的句子。全字母句被用于显示字体和测试打字机。例如:The quick brown fox jumps over the lazy dog.这是一个全字母句包含了所有的26位字母,但是这句话中共有33个字母,我们需要做的是只允许每个字母不能重复,重复的字母需要去掉,那上面的句子去掉重复字母后就是“The quick brown fx jmps v lazy dg.”那规则大概知道了,我们怎么用Python来玩这个文字游戏呢?
思路:
在这里我的思路是先把一个句子的字母进行去重操作,由于去重后的字母都是唯一的,那么只需判断这些字母的格式是不是等于26个,如果是26的话即使全字母句,否则是非字母句,是不是很简单呢?
代码
'''定义一个Pangram_Is类,判断一个英文句子是否是全字母句。'''
class Pangram_Is(object):
def __init__(self,text):
self.t = [] #定义初始化参数t和text
self.text = text
def pangram_out(self): #定义一个函数,将一个句子中的重复的字母除掉,只保留第一次出现的字母
pangram = [chr(i) for i in range(97,123)] #生成一个a-z的26个字母的列表
#print(pangram)
#text = 'How razorback-jumping frogs can level six piqued gymnasts!'
#t = []
text_lower = list(self.text.lower())
#print(text_lower)
for i in text_lower:
if i.isalpha():
if i not in self.t:
self.t.append(i)
else:
self.t.append(i)
# print(123,self.t)
# t2 = ''.join(self.t)
return self.t
def is_pangram(self): #判断没有重负字母的句子是否是否是全字母句,即pangram句。
d = self.pangram_out()
#print(d)
f = [] #定义一个空列表作为容器
for i in d:
if i.isalpha(): #判断该字符串是否是字母,是的话添加到f这个list中去
f.append(i)
#print(f)
if len(f) != 26: #如果该里表中含有26个英文字母,是全字母句,否则非字母句! 打印输出
return '非全字母句:Empty String!'
else:
s = ''.join(d)
#print(s.capitalize())
return '全字母句:%s'%s.capitalize()
if __name__ == '__main__':
text = 'The quick brown fox jumps over the lazy dog.'
d = Pangram_Is(text)
print(d.is_pangram())
text1 = 'Many people spell MySQL incorrectly'
d = Pangram_Is(text1)
print(d.is_pangram())
结果:
全字母句:The quick brown fx jmps v lazy dg.
非全字母句:Empty String!