华为机试-密码验证合格程序

题目描述

密码要求:

1.长度超过8位

2.包括大小写字母.数字.其它符号,以上四种至少三种

3.不能有相同长度超2的子串重复

说明:长度超过2的子串

输入描述:

一组或多组长度超过2的子符串。每组占一行

输出描述:

如果符合要求输出:OK,否则输出NG

示例1

输入

021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000

输出

OK NG NG OK

具体实现 

def fun1(str):
    if len(str) > 8:
        return True
    else:
        return False

def fun2(str):
    dic = {'A':0,'a':0,'1':0,'!':0}
    for s in str:
        if s >= 'A' and s <= 'Z':
            dic['A'] = 1
        elif s >= 'a' and s <='z':
            dic['a'] = 1
        elif s >= '0' and s <= '9':
            dic['1'] = 1
        else:
            d['!'] = 1
    if sum(list(dic.values())) >= 3:
        return True
    else:
        return False
    
def fun3(str):
    for i in range(len(str) - 3):
        if str[i:i+3] in s[i+1:]:
            return False
    return True
        
            
while True:
    try:
        str = input()
        if fun1(str) and fun2(str) and fun3(str):
            print("OK")
        else:
            print("NG")
    except:
        break

代码没有通过 ,出现以下错误

你的输出为:
空.请检查一下你的代码,有没有循环输入处理多个case.点击查看如何处理多个case

mark以下  明天来看

猜你喜欢

转载自blog.csdn.net/echo_1994/article/details/89505271