全字母句還能用Python這樣玩?

什麼是全字母句?

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章