第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呢?
求大神指教讲解以下!先蟹蟹啦
因为 flag_con 是用来判断有几种字符情况的,1、2、3 分别代表 密码有一种字符、有两种、三种 字符情况
而你如果直接进行赋值 1、2或者 3 那么 后续 flag_con 所在的 for 循环下的 if 条件全部要更改,因为 代码中的 if 只写出了一种情况
举个例子。假设你密码只含两种字符,我们可以通过 三个 for 循环 判断是否有来进行增加含有字符的情况
而你直接进行赋值,你在不更改 if 条件下,如何做到用 2 判断是 字母,和特殊符号组合,还是数字和字母?又或者 字母和数字呢
这样 if 条件就会更加繁琐,所以还是前者优于后者~
Twilight6 发表于 2021-5-23 20:34
因为 flag_con 是用来判断有几种字符情况的,1、2、3 分别代表 密码有一种字符、有两种、三种 字符情况 ...
明白了,{:10_275:}蟹蟹
页:
[1]