什麼是全字母句?
全字母句是指包含有字母表中所有字母並且言之成義的句子。全字母句被用於顯示字體和測試打字機。例如: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!