按实践题自己写的代码,存在bug:写一个函数,它使用正则表达式,确保传入的口令字符串是强口令。强口令的 定义是:长度不少于 8 个字符,同时包含大写和小写字符,至少有一位数字。你可 能需要用多个正则表达式来测试该字符串,以保证它的强度。
不明白此处循环后输入Aa11111111返回False而aA11111111返回True的原因,还请指教。
import re
def check():
password=input('请输入一个包含大小写字母且不少于8个字符的口令')
print("将对口令:",password,"执行校验")
if re.compile(r'(.*){8,}[a-z]+[A-Z]+[0-9]+').search(password) is None :
print('您输入的口令错误:',password,'请重新输入')
return False
else:
print('您输入的口令成功:',password,'nice')
return True
while check() == False :
check()
while check() ==True :
print('您的口令录入成功')
break
else:
print('您的口令录入成功')
执行结果如下
请输入一个包含大小写字母且不少于8个字符的口令
将对口令: 执行校验
您输入的口令错误: 请重新输入
请输入一个包含大小写字母且不少于8个字符的口令Aaaa
将对口令: Aaaa 执行校验
您输入的口令错误: Aaaa 请重新输入
请输入一个包含大小写字母且不少于8个字符的口令Aa111111
将对口令: Aa111111 执行校验
您输入的口令错误: Aa111111 请重新输入
请输入一个包含大小写字母且不少于8个字符的口令Aa11111111
将对口令: Aa11111111 执行校验
您输入的口令错误: Aa11111111 请重新输入
请输入一个包含大小写字母且不少于8个字符的口令aA11111111
将对口令: aA11111111 执行校验
您输入的口令成功: aA11111111 nice
您的口令录入成功