张静aa 发表于 2021-5-23 20:26:25

第14讲动动手课后题

题目:请写一个密码安全性检查的代码代码: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 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呢?
求大神指教讲解以下!先蟹蟹啦

Twilight6 发表于 2021-5-23 20:34:49



因为 flag_con 是用来判断有几种字符情况的,1、2、3 分别代表 密码有一种字符、有两种、三种 字符情况

而你如果直接进行赋值 1、2或者 3 那么 后续 flag_con 所在的 for 循环下的 if 条件全部要更改,因为 代码中的 if 只写出了一种情况

举个例子。假设你密码只含两种字符,我们可以通过 三个 for 循环 判断是否有来进行增加含有字符的情况

而你直接进行赋值,你在不更改 if 条件下,如何做到用 2 判断是 字母,和特殊符号组合,还是数字和字母?又或者 字母和数字呢

这样 if 条件就会更加繁琐,所以还是前者优于后者~

张静aa 发表于 2021-5-23 20:53:17

Twilight6 发表于 2021-5-23 20:34
因为 flag_con 是用来判断有几种字符情况的,1、2、3 分别代表 密码有一种字符、有两种、三种 字符情况 ...

明白了,{:10_275:}蟹蟹
页: [1]
查看完整版本: 第14讲动动手课后题