华为机试:密码验证合格程序
主要运用面向对象构建类,解决

import sys
class checkpwd():
    #initial object
    type_num=0
    child_str=False
    def __init__(self,pwd):
        self.pwd=pwd
    #check this password conclude how many string types
    def check_type(self):
        typeset=set()
        for i in self.pwd:
            if i.isdigit():typeset.add('number')        #number included
            elif i.isalpha():
                if i.islower():typeset.add('loweral')      #lower alphabet included
                else:typeset.add('upperal')      #upper alphabet included
            else:typeset.add('others')      #others' character
        self.type_num=len(typeset)      #strings' type number
    #check whether this password concludes repeat strings
    def check_child(self):
        for i in range(len(self.pwd)-3):       #check strings including 3 characters
            if self.pwd.count(self.pwd[i:i+3])>1:
                self.child_str=True     #including repeat strings
                break
            else:self.child_str=False       #not including
    #check password globally
    def check_pwd(self):
        if len(self.pwd)<=8:return 'NG'
        self.check_child()
        if self.child_str:return 'NG'
        self.check_type()
        if self.type_num<3:return 'NG'
        return 'OK'
while True:
    pwd=sys.stdin.readline().strip()    #input strings,cut space,etc. in the end
    if pwd=='':break
    cp=checkpwd(pwd)
    print(cp.check_pwd())