鱼C论坛

 找回密码
 立即注册
查看: 3304|回复: 2

[学习笔记] 关于课后题14讲 passwd级别的试验

[复制链接]
发表于 2017-10-16 16:40:07 | 显示全部楼层 |阅读模式

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

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

x
因为密码初级,中级和高级一开始没有理解,我理解成了要对这三个级别进行检测的了,第一个就不说了,中级和高级我根据老师的答案进行的小改动。

中级: 只能3次尝试,超过次数结束
count = 3
str1 = 'Netgear_2'
symbols = r'''~!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
while count:
    flag_con = 0  #这个要是放在while 以外,也就是放在上面会使循环有问题的#
    passwd = input("请输入密码: ")
    length = len(passwd)
    if passwd == str1:
        print('Yes, you get it')
        break
    elif length < 8:
        print('输入有误,输入密码长度不能超过8位,你还有', count-1, '次机会')
    else:
        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
        if flag_con >= 2: #表示两两组合,三个当然也可以的#
            if passwd != str1:
                print('password input error, you have', count-1, '次机会')
        else:
            print('输入错误,请输入数字,字符串和特殊字符的两两组合', count-1, '次机会')
    count -= 1
if count == 0:
    print("已经超过3次,请稍后再试")

高级: 密码必须由特殊字符开始,为特殊字符,字母加数字的三种组合,其中字母包含大小写。

count = 3
str1 = 'Netgear_2'
symbols = r'''~!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'
while count:
    flag_con = 0  #这个要是放在while 以外,也就是放在上面会使循环有问题的#
    passwd = input("请输入密码: ")
    length = len(passwd)
    if passwd == str1:
        print('Yes, you get it')
        break
    elif length <= 3:
        print('输入有误,输入密码长度不能低于3位,你还有', count-1, '次机会')
    elif length > 7:
        print('输入有误,输入密码长度不能超过6位,你还有', count-1, '次机会')
    else:
        for each in passwd: #密码必须以特殊字符开头,否则会提示 A10 行的特殊信息
            if each not in symbols:
                print('输入错误,请输入以特殊字符开头的密码,密码为特殊字符,字母和数字的三种组合,你还有', count-1, '次机会')
                break
            else:
                for each in passwd:
                    if each in chars:
                        if not passwd.islower():
                            flag_con += 1
                            break
                        else:
                            print('输入错误,请输入数字,字符串和特殊字符的三种组合,其中字母请包含大小写,你还有', count-1, '次机会')
                            break
                break
                for each in passwd:
                    if each in nums:
                        flag_con += 1
                        break
                if flag_con >= 2: #表示三三组合#
                    if passwd != str1:
                        print('password input error, you have', count-1, '次机会')
                else:
                    print('输入错误,请输入数字,字符串和特殊字符的三种组合,你还有', count-1, '次机会')
                break  #必须在这个地方加break,否则下面一行的else仍然会被检测到
    count -= 1
if count == 0:
    print("已经超过3次,请稍后再试")
  


本人完全新手,有写错还望指正,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-10-19 09:37:15 | 显示全部楼层
自己顶下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-13 08:28:13 | 显示全部楼层
好历害!我现在可以看的懂你的代码让我写呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 20:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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