rari 发表于 2020-8-13 17:11:58

为什么我只要输入超过8位的密码就会报错

如题

zltzlt 发表于 2020-8-13 17:13:04

你的代码本身逻辑就有问题吧……

xiaosi4081 发表于 2020-8-13 17:13:43

把if len(password) <8 改成 if len(password) <=8

rari 发表于 2020-8-13 17:14:21

这个是code





password=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位''')

yhhpf 发表于 2020-8-13 17:16:44

你这什么神逻辑...if嵌套一起上面一个没满足就不会继续到下面了,导致level一直没被赋值,所以最后报错没有level这个变量,也就没办使用if判断了。

rari 发表于 2020-8-13 17:17:40

xiaosi4081 发表于 2020-8-13 17:13
把改成

不行 还是level==1 not defined

陈尚涵 发表于 2020-8-13 17:18:13

神逻辑!!!!!

rari 发表于 2020-8-13 17:18:30

zltzlt 发表于 2020-8-13 17:13
你的代码本身逻辑就有问题吧……

嗷呜 那我重新理一下

hrp 发表于 2020-8-13 17:18:31

层层嵌套是非常不好的编程习惯

学习型motor 发表于 2020-8-13 17:18:44

本帖最后由 学习型motor 于 2020-8-13 17:20 编辑

你的逻辑出现问题了,怎么会有判断i是不是字母然后还判断是不是数字?

zltzlt 发表于 2020-8-13 17:19:48

字符怎么可能 既是数字又是字母还是符号?

rari 发表于 2020-8-13 17:20:16

zltzlt 发表于 2020-8-13 17:13
你的代码本身逻辑就有问题吧……

能不能告知一下是哪里有问题。。

freeck2013 发表于 2020-8-13 17:20:43

因为 你第二个for循环永远不会执行下去。。。。。
你password 不可能同时属于三种lst吧

freeck2013 发表于 2020-8-13 17:22:31

rari 发表于 2020-8-13 17:20
能不能告知一下是哪里有问题。。

第二个for循环啊   这么写哈哈哈哈
你自己想通就会觉得呆呆的

rari 发表于 2020-8-13 17:24:08

学习型motor 发表于 2020-8-13 17:18
你的逻辑出现问题了,怎么会有判断i是不是字母然后还判断是不是数字?

ohohoh 明白了谢谢!!!

rari 发表于 2020-8-13 17:24:45

zltzlt 发表于 2020-8-13 17:19
字符怎么可能 既是数字又是字母还是符号?

明白啦 谢谢!!

rari 发表于 2020-8-13 17:25:36

freeck2013 发表于 2020-8-13 17:20
因为 你第二个for循环永远不会执行下去。。。。。
你password 不可能同时属于三种lst吧

懂了懂了 谢谢!!!!
页: [1]
查看完整版本: 为什么我只要输入超过8位的密码就会报错