题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
passwds = []
while 1:
try:
passwd = input()
passwds.append(passwd)
except:
break
valid_passwd = [0 for _ in range(len(passwds))]
for i, n in enumerate(passwds):
if len(n) <= 8:
continue
else:
upper_num = 0
lower_num = 0
digit_num = 0
special_num = 0
repeat_seq = 0
for j, char in enumerate(n):
if char.isupper():
if not upper_num:
upper_num = 1
elif char.islower():
if not lower_num:
lower_num = 1
elif char.isdigit():
if not digit_num:
digit_num = 1
elif char == ' ' or char == '\n':
pass
else:
if not special_num:
special_num = 1
if j > 4 and n[j-2:j+1] in n[:j-2]: # 判断重复字符串是否已经存在,只用判断最短情况即可
repeat_seq = 1
if repeat_seq:
continue
if not upper_num+lower_num+digit_num+special_num >= 3:
continue
valid_passwd[i] = 1
# print(upper_num, lower_num, digit_num, special_num)
for n in valid_passwd:
if n:
print('OK')
else:
print('NG')
https://blog.csdn.net/u012804784/article/details/131149259
利用内置函数或者正则化(re.match(r'[A-Z]', char))表达式判断大小写、数字
查看25道真题和解析