| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 题目:请写一个密码安全性检查的代码代码:check.py 
 
# 密码安全性检查代码 
# 
# 低级密码要求: 
#   1. 密码由单纯的数字或字母组成 
#   2. 密码长度小于等于8位 
# 
# 中级密码要求: 
#   1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合 
#   2. 密码长度不能低于8位 
# 
# 高级密码要求: 
#   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合 
#   2. 密码只能由字母开头 
#   3. 密码长度不能低于16位 
代码:print('==============================RESTART==============================\n') 
symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>''' 
alphas = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 
nums = '0123456789' 
password = input('请输入需要检查的密码组合:') 
length = len(password) 
while (password.isspace()) or (length == 0): 
    password = input('您输入的密码为空(或空格),请重新输入:') 
    length = len(password) 
if length <= 8: 
    flaglen = 1 
if 8 < length <= 16: 
    flaglen = 2 
if length >= 16: 
    flaglen = 3 
 
flagcon = 0 
for i in password: 
    if i in symbols: 
        flagcon += 1 
        break 
for i in password: 
    if i in nums: 
        flagcon += 1 
        break 
for i in password: 
    if i in alphas: 
        flagcon += 1 
        break 
    
while 1: 
    print('您的密码安全级别评定为:',end='')   # 这里end后面少了个等号 
    if flaglen == 1 or flagcon == 1: 
        print('低') 
    elif flaglen == 3 and flagcon == 3 and (password[0] in alphas): 
        print('高') 
        print('请继续保持') 
        break 
    else: 
        print('中') 
         
    print('''请按以下方式提升您的安全级别: 
                    1.密码必须由数字、字母及特殊字符三种组合 
                    2.密码只能由字母开头 
                    3.密码长度不能低于16位''') 
    break 
为什么要定义flag_con =0,然后flag_con+=1,这样编写的目的及作用是什么呢?为什么不能像前面的flag_len =1.flag_len = 2.编写进而在后面的程序中直接让flag_con 等于1 或2或3呢? 
求大神指教讲解以下!先蟹蟹啦
 
 
因为 flag_con 是用来判断有几种字符情况的,1、2、3 分别代表 密码有一种字符、有两种、三种 字符情况 
 
而你如果直接进行赋值 1、2或者 3 那么 后续 flag_con 所在的 for 循环下的 if 条件全部要更改,因为 代码中的 if 只写出了一种情况 
 
举个例子。假设你密码只含两种字符,我们可以通过 三个 for 循环 判断是否有来进行增加含有字符的情况 
 
而你直接进行赋值,你在不更改 if 条件下,如何做到用 2 判断是 字母,和特殊符号组合,还是数字和字母?又或者 字母和数字呢 
 
这样 if 条件就会更加繁琐,所以还是前者优于后者~ 
 
 
 
 |   
 
 
 
 |