为什么我只要输入超过8位的密码就会报错
如题 你的代码本身逻辑就有问题吧…… 把if len(password) <8 改成 if len(password) <=8 这个是codepassword=input('请输入需要检查的密码组合')
num='1234567890'
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
for i in password:
if i in num or i in chars:
if len(password) < 8:
level=1
for i in password:
if i in chars:
if i in num:
if i in symbols:
if len (password)>=8 and len(password)<16:
level=2
for i in password:
if i in chars:
if i in num:
if i in symbols:
if len(password)>=16:
print('’‘你的密码安全级别评定为:高/t/n请继续保持''')
if level==1:
print(''' 您的密码安全级别评定为:低
请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字开头
3.密码长度不能低于16位''')
elif level==2:
print(''' 您的密码安全级别评定为:中
请按以下方式提升您的密码安全级别:
1.密码必须由数字、字母及特殊字符三种组合
2.密码只能由字开头
3.密码长度不能低于16位''') 你这什么神逻辑...if嵌套一起上面一个没满足就不会继续到下面了,导致level一直没被赋值,所以最后报错没有level这个变量,也就没办使用if判断了。 xiaosi4081 发表于 2020-8-13 17:13
把改成
不行 还是level==1 not defined 神逻辑!!!!! zltzlt 发表于 2020-8-13 17:13
你的代码本身逻辑就有问题吧……
嗷呜 那我重新理一下 层层嵌套是非常不好的编程习惯 本帖最后由 学习型motor 于 2020-8-13 17:20 编辑
你的逻辑出现问题了,怎么会有判断i是不是字母然后还判断是不是数字? 字符怎么可能 既是数字又是字母还是符号? zltzlt 发表于 2020-8-13 17:13
你的代码本身逻辑就有问题吧……
能不能告知一下是哪里有问题。。
因为 你第二个for循环永远不会执行下去。。。。。
你password 不可能同时属于三种lst吧 rari 发表于 2020-8-13 17:20
能不能告知一下是哪里有问题。。
第二个for循环啊 这么写哈哈哈哈
你自己想通就会觉得呆呆的 学习型motor 发表于 2020-8-13 17:18
你的逻辑出现问题了,怎么会有判断i是不是字母然后还判断是不是数字?
ohohoh 明白了谢谢!!! zltzlt 发表于 2020-8-13 17:19
字符怎么可能 既是数字又是字母还是符号?
明白啦 谢谢!! freeck2013 发表于 2020-8-13 17:20
因为 你第二个for循环永远不会执行下去。。。。。
你password 不可能同时属于三种lst吧
懂了懂了 谢谢!!!!
页:
[1]