全字母句还能用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!

 

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