本帖最后由 向西而笑 于 2017-7-17 19:28 编辑 meet = 1
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
tip = ("请按以下方式提升您的密码安全级别:\n\
\t1. 密码必须由数字、字母及特殊字符三种组合\n\
\t2. 密码只能由字母开头\n\
\t3. 密码长度不能低于16位'")
while meet:
passwd = input('请输入需要检查的密码组合:')
# 判断长度
length = len(passwd)
while (passwd.isspace() or length == 0):
passwd = input("您输入的密码为空(或空格),请重新输入:")
length = len(passwd)
if length <= 8:
flag_len = 1
elif 8 < length < 16:
flag_len = 2
else:
flag_len = 3
flag_con = 0
# 判断是否包含特殊字符
for each in passwd:
if each in symbols:
flag_con += 1
break
# 判断是否包含字母
for each in passwd:
if each in chars:
flag_con += 1
break
# 判断是否包含数字
for each in passwd:
if each in nums:
flag_con += 1
break
# 打印结果
while 1:
print("您的密码安全级别评定为:", end='')
if flag_len == 1 or flag_con == 1:
print("低")
print(tip)
elif flag_len == 2 or flag_con == 2:
print("中")
print(tip)
else:
print("高")
print("请继续保持")
meet = 0
break
解决思路:要让程序一直跑下去那就要让代码置于循环之中(后面回会学自定义函数,更加方便),当输入的密码强度为高时满足循环条件跳出循环。
所以我一开始定义了一个meet = 1,然后把整段代码放入一个循环中,最后在满足条件的分支插入meet = 0,循环结束,程序结束。
思路不难,但是这个代码有问题,高级强度密码的要求是必须字母开头,我试了下数字开头也可以,头疼
|