鱼C论坛

 找回密码
 立即注册
查看: 2153|回复: 0

[学习笔记] 第十四课密码强度习题

[复制链接]
发表于 2020-1-9 19:12:18 | 显示全部楼层 |阅读模式

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

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

x
本人比较愚钝,所以在这个题目上花了较多时间才理解透,根据鱼C大大的代码稍微改动了一下:
symbols = r'''~!@#$%^&*()_=-/,.?<>;:[]{}\|'''
nums = '0123456789'
chars = 'abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUVwWXYZ'
again = 'y'
while again == 'y':
    password = input('请输入密码:')
    length = len(password)
    while(password.isspace() or length == 0):
        password = input('输入为空或未输入字符,请重新输入:')
    if length <= 8:
        flag_len = 1
    elif 8 < length < 16:
        flag_len = 2
    else:
        flag_len = 3
    flag_con = 0
    for i in password:
        if i in symbols:
            flag_con += 1  #可否写成flag_con = 1,当然不行
            break
    for i in password:
        if i in chars:
            flag_con += 1 #可否写成flag_con = 1,当然不行
            break
    for i in password:
        if i in nums:
            flag_con += 1 #可否写成flag_con = 1,当然不行
            break
    while 1:
        print('您的密码安全级别评定为: ',end = '')
        if flag_len == 1 or flag_con == 1:
            print('低')
        elif flag_len == 2 or flag_con == 2:
            print('中')
        else:
            print('高')
            print('请继续保持')
            if password[0] not in chars:
                print('遗憾的是密码第一个字符不为字母')
            break  #如果没有break 则会进入死循环
            print('''请按以下方式提升您的密码安全级别:  \n\
    \t1. 密码必须由数字.字母及特殊字符三种组合  \n\
    \t2. 密码只能由字母开头  \n\
    \t3. 密码长度不能低于 16 位''')
            break   #如果没有break 则会进入死循环
    again = input("重新测试请按'y',退出请按其他键:")
print('测试结束!')

判断密码的第一个字符是否为字母,使用了.isalpha代码,这里犯了个低级错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 15:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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