鱼C论坛

 找回密码
 立即注册
查看: 1702|回复: 4

[已解决]关于“检测密码等级”的小程序,帮我看看我哪里错了!谢谢

[复制链接]
发表于 2017-4-24 12:37:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
'''——检查密码安全级别——'''

p = input('请输入密码:')
list1 = ['~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_']
n = 0

if (p.isalnum() == True) and (len(p) <= 8):
    print('密码等级:低')


elif (len(p) >= 16):
    while n < len(list1):
        if ((p.isalpha() == False) and (p.isdigit() == False)) and (p.find(list1[n]) == True) and (p[0].isalpha == True):
            print('密码等级:高')
        else:
            n += 1


else:
    if ((p.isalpha() == False) and (p.isdigit() == False)) and (len(p) >= 8):
        print('密码等级:中')
        
    else:
        while n < len(list1):
            if ((p.isalpha() == True) or (p.isdigit() == True)) and (p.find(list1[n]) == True) and (len(p)>= 8):
                print('密码等级:中')
            else:
                n += 1
   

'''问题出现在:输入以字母打头的16位以上英数符兼备的复杂密码时,并没有打印出“密码等级:高”,其他情况正常
'''
最佳答案
2017-4-24 14:39:46
凤凰0620 发表于 2017-4-24 14:02
'''请看我新的逻辑,并且依旧存在检测不出”密码级别:高“的情况'''

'''——检查密码安全级别——' ...

你在你的这句中加一句打印就会看出来是什么原因
  1. else:
  2.                 n += 1
  3.                 print("密码等级。。。。。待确定")
复制代码

其实就是因为你用一个while循环去判断,这种判断是循环判断,不满足条件的其实在n+1这里,但是你没有打印
不过再这加一行打印也不行,这样会让这句话打印好几遍
总的来说,问题出来你用这个while循环这里,你要换成一个比较直接的if来判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-24 13:35:46 | 显示全部楼层
很明显你考虑的密码格式不全
你上述的判断忽略掉了很多密码情况
比如123456789这么简单的,也不在你的考虑范围内
重点在你最后那个循环判断中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-24 14:02:27 | 显示全部楼层
本帖最后由 凤凰0620 于 2017-4-24 14:04 编辑
gopythoner 发表于 2017-4-24 13:35
很明显你考虑的密码格式不全
你上述的判断忽略掉了很多密码情况
比如123456789这么简单的,也不在你的考 ...


'''请看我新的逻辑,并且依旧存在检测不出”密码级别:高“的情况'''

'''——检查密码安全级别——'''

p = input('请输入密码:')
list1 = ['~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_']
n = 0

if (p.isalnum() == True) and (len(p) <= 8):
    print('密码等级:低')


elif (p.isalpha() == False) and (p.isdigit() == False):
    while (n < len(list1) and (8<= len(p) <16):
        if p.find(list1[n]) == True:
            print('密码等级:中')
        else:
            n += 1

    while (n < len(list1)) and (len(p) >= 16):
        if (p.find(list1[n]) == True) and (p[0].isalpha() == True):
            print('密码等级:高')
        else:
            n += 1

else:
    while (n < len(list1)) and (len(p) < 16):
        if ((p.isalpha() == True) or (p.isdigit() == True)) and (p.find(list1[n]) == True):
            print('密码等级:中')
        else:
            n += 1
    else:
        print('密码等级:低')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-24 14:39:46 | 显示全部楼层    本楼为最佳答案   
凤凰0620 发表于 2017-4-24 14:02
'''请看我新的逻辑,并且依旧存在检测不出”密码级别:高“的情况'''

'''——检查密码安全级别——' ...

你在你的这句中加一句打印就会看出来是什么原因
  1. else:
  2.                 n += 1
  3.                 print("密码等级。。。。。待确定")
复制代码

其实就是因为你用一个while循环去判断,这种判断是循环判断,不满足条件的其实在n+1这里,但是你没有打印
不过再这加一行打印也不行,这样会让这句话打印好几遍
总的来说,问题出来你用这个while循环这里,你要换成一个比较直接的if来判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-24 15:07:22 | 显示全部楼层
gopythoner 发表于 2017-4-24 14:39
你在你的这句中加一句打印就会看出来是什么原因

其实就是因为你用一个while循环去判断,这种判断是循 ...

'''成功了亲爱的!是我find语句写错了!现更新正确版本如下,并且加入了您说的那个把暗箱操作放到平台上来的那个小track,术语叫什么来着??'''
'''——检查密码安全级别——'''

p = input('请输入密码:')
list1 = ['~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_']
n = 0

if (p.isalnum() == True) and (len(p) <= 8):
    print('密码等级:低')


elif (p.isalpha() == False) and (p.isdigit() == False):
    while n < len(list1) and 8<= len(p) <16:
        if p.find(list1[n]) != -1:
            print('密码等级:中')
            break
        else:
            n += 1
            print("密码等级。。。。。待确定")
    while n < len(list1) and len(p) >= 16:
        if (p.find(list1[n]) != -1) and (p[0].isalpha() == True):
            print('密码等级:高')
            break
        else:
            n += 1
            print("密码等级。。。。。待确定")

else:
    while n < len(list1) and len(p) < 16:
        if ((p.isalpha() == True) or (p.isdigit() == True)) and (p.find(list1[n]) == True):
            print('密码等级:中')
            break
        else:
            n += 1
            print("密码等级。。。。。待确定")
    else:
        print('密码等级:其余低')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-21 03:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表