初学python 密码安全性检查

根据小甲鱼论坛习题

供回顾复习

#Author Vjack

symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>''' #在''' 前面加上r 的含义是为了防止被转义  疑问:为什么在特殊字符前面 加'''  而不是'

chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

nums = '0123456789'

passwd = input('请输入需要检查的密码:')

#判断长度

length = len(passwd)

#判断输入的是否是密码

while ( passwd.isspace() or length ==0 ):#isspace 是检测字符串是否只由空格组成,若只包含空格返回ture  记得加:

    passwd = input('您输入的密码为空(或空格),请重新输入:')

#先判断长度,并用flag_len 代替

 if length <= 8:

    flag_len = 1

elif 8 < length < 16:

    flag_len = 2

else:

    flag_len = 3


#因为在判断是否为高级密码时它有一个要求是:第一个必须是字母,所以加一个判断:先取出passwd的第一个字符串判断是否在chars 中 即可,用的是字符串对象的fing()方法参考网址https://www.cnblogs.com/johnson-yuan/p/7910087.html址https://www.cnblogs.com/johnson-yuan/p/7910087.html         有更好的方法欢迎指教

 a = passwd [:1]

result =chars.find(a) >= 0  #在最后判断的时候是否是高级密码时加上result,只有当result为true时才是。

#接下来判断存在字母,特殊字符,数字类型有几种

flag_con = 0 #  先初始化

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


#可以打印结果了

while 1:

    print('您的密码安全级别判定为:',end='')#为什么要加end  草稿有解答。

    if flag_len == 1 or flag_con == 1:

        print('低')#当程序输出为低级和中级时会执行下面的一个print,提醒你改进方法,在break


    elif flag_len ==2 and flag_con >=2: # 用and 两个条件都满足才是中级

        print('中')

    

elif flag_len ==3 and flag_con ==3 and result:
    print('高')
    break#这儿已经跳出了循环,也不再执行下面的print
else:
    print('中')#这我想的是一种情况它不满足高级密码必须字母开头,但它有三种类型,大于16位,就输出中级密码

    print('请按以下方式进行提升1....2....3.....')#注意这一行的对齐,没有跟while对齐
    break
#这条件有点问题啊,高级密码要是没有字母开头怎么办,输出中级密码?
#还有一个注意的就是在if elif else 中else后面不能再添其他条件,要添只能在elif后面

    #在pycharm 跑了一遍发现了几个需要注意的问题

1.有时候粘贴过去的它不能run,可能是没对齐

2.上面提到的 else 后面不能在加条件,要加在elif后面加

  

#原题目

1.  # 密码安全性检查代码

2.  #

3.  # 低级密码要求:

4.  #  1. 密码由单纯的数字或字母组成

5.  #  2. 密码长度小于等于8

6.  #

7.  # 中级密码要求:

8.  #  1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合

9.  #  2. 密码长度不能低于8

10. #

11. # 高级密码要求:

12. #   1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合

13. #   2. 密码只能由字母开头

14. #   3. 密码长度不能低于16








  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值