鱼C论坛

 找回密码
 立即注册
查看: 909|回复: 7

[已解决]014密码强度检测作业有一点小问题,麻烦各位了!

[复制链接]
发表于 2020-5-26 16:12:21 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Aber 于 2020-5-26 16:17 编辑
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'

password = input('请输入需要检查的密码组合:')

#先判断密码长度
length = len(password)

while (password.isspace() or length == 0):
    password = input('您输入密码为空(或空格),请重新输入:')
    length = len(password) #这里while下为什么还需要len()一次,上面不是已经有了吗,是必要的吗?

if length <= 8:
    flag_len = 1
elif 8 < length <16:
    flag_len = 2
else:
    flag_len = 3

flag_con = 0 #这是对什么的初始化值对呀?

#判断是否包含特殊字符

for each in password:
    if each in symbols:
        flag_con += 1
        break

#判断是否包含字母

for each in password:
    if each in chars:
        flag_con += 1
        break

#判断是否包含数字

for each in password:
    if each in nums:
        flag_con +=1
        break
while 1: #这是啥意思,能不能理解为while True?
    print ('您的密码安全级别评定为:',end=' ')
    if flag_len == 1 or flag_con == 1:
        print ('低')
    elif flag_len == 3 and flag_con == 3 and (password[0] in chars):
        
#这里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?
        print ('高')
        print ('请继续保持')
        break
    else:
        print ('中')


    print ("请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
    \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于16位")
    break

又得麻烦大家了
最佳答案
2020-5-26 16:21:22
这里while下为什么还需要len()一次,上面不是已经有了吗,是必要的吗?

因为你重新输入了password了 丫,如果不重新判断长度,下面的等于不是判断你第一次输入错误的password了嘛
这是对什么的初始化值对呀?

flag_con 初始化是为了判断后面的是否包含字母、数字、特殊字符,只要有包含其一  就加一次1  比如:如果等于3说明密码中含有字母、数字、特殊字符
这是啥意思,能不能理解为while True?

Python 中所有非0数字都为 True  所有这里改成True 是一样的
这里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?

对的,说明代码含有字母、数字、特殊字符,这个是高级密码的基本条件嘛~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-26 16:13:11 | 显示全部楼层
代码乱了 重新打吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:13:46 | 显示全部楼层
你不能在代码里面添加引用的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:18:17 | 显示全部楼层
本帖最后由 xiaosi4081 于 2020-5-26 16:21 编辑

原先的代码:
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'

password = input('请输入需要检查的密码组合:')

#先判断密码长度
length = len(password)

while (password.isspace() or length == 0):
    password = input('您输入密码为空(或空格),请重新输入:')
    length = len(password) #这里while下为什么还需要len()一次,上面不是已经有了吗,是必要的吗?必要的,因为你上面重新赋值了

if length <= 8:
    flag_len = 1
elif 8 < length <16:
    flag_len = 2
else:
    flag_len = 3

flag_con = 0 #这是对什么的初始化值对呀?

#判断是否包含特殊字符

for each in password:
    if each in symbols:
        flag_con += 1
        break

#判断是否包含字母

for each in password:
    if each in chars:
        flag_con += 1
        break

#判断是否包含数字

for each in password:
    if each in nums:
        flag_con +=1
        break
while 1: #这是啥意思,能不能理解为while True?可以
    print ('您的密码安全级别评定为:',end=' ')
    if flag_len == 1 or flag_con == 1:
        print ('低')
    elif flag_len == 3 and flag_con == 3 and (password[0] in chars):
        
#这里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?
        print ('高')
        print ('请继续保持')
        break
    else:
        print ('中')


    print ("请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
    \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于16位")
    break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:21:22 | 显示全部楼层    本楼为最佳答案   
这里while下为什么还需要len()一次,上面不是已经有了吗,是必要的吗?

因为你重新输入了password了 丫,如果不重新判断长度,下面的等于不是判断你第一次输入错误的password了嘛
这是对什么的初始化值对呀?

flag_con 初始化是为了判断后面的是否包含字母、数字、特殊字符,只要有包含其一  就加一次1  比如:如果等于3说明密码中含有字母、数字、特殊字符
这是啥意思,能不能理解为while True?

Python 中所有非0数字都为 True  所有这里改成True 是一样的
这里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?

对的,说明代码含有字母、数字、特殊字符,这个是高级密码的基本条件嘛~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:22:25 | 显示全部楼层
1、你已经重新输入了,密码的长度就变了,所以要再检查一次。这两个len不是同一个了。

2、这是啥意思,能不能理解为while True?   是的

3、里flag_con之所以能等于3是因为上面3个判断条件都满足if了,从0加了3次,是吗?  是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-26 16:23:56 | 显示全部楼层
Twilight6 发表于 2020-5-26 16:21
因为你重新输入了password了 丫,如果不重新判断长度,下面的等于不是判断你第一次输入错误的password了 ...

明白了明白了,看好像是能看懂了,但是自己写不出来~ 好扎心
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-26 16:27:40 | 显示全部楼层
Aber 发表于 2020-5-26 16:23
明白了明白了,看好像是能看懂了,但是自己写不出来~ 好扎心

慢慢来吧 我当时感觉有点难还把这题跳过了  哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 04:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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