密码验证合格程序python3

密码验证合格程序

http://www.nowcoder.com/questionTerminal/184edec193864f0985ad2684fbc86841

import sys

class CheckPasswd():
    def __init__(self, passwd):
        self.passwd = passwd
        self.type_counter = 0
        self.child_str = False

    def check_type(self):  #检查类型是否多于等于3
        type_set = set()
        for i in self.passwd:
            if i.isdigit():  #是否有数字
                type_set.add(1)
            elif i.isalpha():  #是否有字母
                if i.lower() == i:
                    type_set.add(2)
                else:
                    type_set.add(3)
            else:
                type_set.add(4)

        self.type_counter = len(type_set)

    def check_child(self):  #检查是否有重复子串
        for i in range(len(self.passwd)-3):
            if self.passwd.count(self.passwd[i:i+3]) > 1:
                self.child_str = True
                break  #这里一检查到有重复子串,就break,不然一直遍历,最后的结果可能为False
            else:
                self.child_str = False  

    def run_check(self):
        if len(self.passwd) <= 8:
            return 'NG'

        self.check_type()
        if self.type_counter < 3:
            return 'NG'

        self.check_child()
        if self.child_str:
            return 'NG'

        return 'OK'

def main():
    while True:
        passwd = sys.stdin.readline().strip()
        if passwd == '':
            break

        check_instance = CheckPasswd(passwd)
        print(check_instance.run_check())

main()
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 15:08
点赞 评论 收藏
分享
程序员小白条:这比例牛逼,750:1
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务