鱼C论坛

 找回密码
 立即注册
查看: 2167|回复: 6

第14讲的动动手密码安全级别的代码问题

[复制链接]
发表于 2017-9-28 10:29:53 | 显示全部楼层 |阅读模式

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

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

x
对于第14讲的动动手的密码安全级别的代码,我有几点不懂的,请各位大神指点下,不甚感激~~
symbols = r'''~!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''  #这里为什么用到连续三个单引号?
chars = 'abcdfeghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
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   #这里是什么意思?和前面的flag_len一样,用来分类判定密码的长度和字符种类?为什么用flag_len和flag_con,有什么特别含义吗?
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: #这里看不懂,flag_con == 1是如何得到的结果,for循环,貌似可以得出好多数值吧?为什么只有1和3?
        print('低')
    elif flag_len == 3 and flag_con == 3 and (passwd[0] in chars):
        print('高')
        print('请继续保持')
        break
    else:
        print('中')
    print('请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
    \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于16位')
    break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-28 10:55:58 | 显示全部楼层
2017-09-28_104834.png

2017-09-28_105509.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-28 11:07:06 | 显示全部楼层

多谢你的指导。仍旧有几点疑问:
1. 第一行的代码中,为什么要用到3个单引号,2个或是1个不可以吗?
2. 以前遇到过猜数字游戏的代码,也是要求重复输入的,都没有要求重新定义啊~~为什么这里要?
3. 关于flag_con代表密码强度是自己随便定义的,还是有什么特别要求的吗?非要加个_con之类的东东?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-28 11:32:48 | 显示全部楼层
老笨啊 发表于 2017-9-28 11:07
多谢你的指导。仍旧有几点疑问:
1. 第一行的代码中,为什么要用到3个单引号,2个或是1个不可以吗?
2. ...

重新定义什么的我是不懂。
你带着纸(length = len(passwd) )去WC,结果厕所里有人。然后过几分钟后再去WC,我相信也同样也会带纸,不可能空着手去;当然你比效特别那就没办法了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 03:20:40 | 显示全部楼层
求问大神! 不懂这一行最后为何要加一个 passwd[0] in chars
Screen Shot 2018-01-04 at 2.19.21 PM.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-14 16:05:29 | 显示全部楼层
yzhan228 发表于 2018-1-5 03:20
求问大神! 不懂这一行最后为何要加一个 passwd[0] in chars

满足 “密码只能由字母开头” 这个条件
passwd[0]是密码的开头第一位,判断它是否在“chars”字母列表中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-14 16:11:24 | 显示全部楼层
老笨啊 发表于 2017-9-28 11:07
多谢你的指导。仍旧有几点疑问:
1. 第一行的代码中,为什么要用到3个单引号,2个或是1个不可以吗?
2. ...

1.我也不清楚;
2. 密码为空或空格,必然重新输入,输入后的密码和长度就是新的,和之前的不一样,所以要重新定义密码passwd和密码长度length;
3.flag_con是随便起的一个名字,你可以起其它名字,只要方便区分即可。_con当然不是必须的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 00:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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