《python编程快速上手——让繁琐工作自动化》实践项目——强口令检测

题目:

写一个函数,它使用正则表达式,确保传入的口令字符串是强口令。强口令的定义是:长度不少于 8 个字符,同时包含大写和小写字符,至少有一位数字。你可能需要用多个正则表达式来测试该字符串,以保证它的强度。

个人思路:使用多个正则来确保各个条件符合。如果有一项符合则标记为True。如长度条件符合那么length = True。

长度:

python 复制代码
import re

def super_safe_pw(s):
    r = re.compile(r'.{8,}')
    e = r.search(s)
    length = 0
    if e is None: #r.search(s) is None 而不是e.group()
        print('长度低于8')

    else:
        print('长度合格')
        length = 1

定义函数super_safe_pw,参数为字符串s。

python 复制代码
r = re.compile(r'.{8,}')

'.'可以匹配除换行符外的所有字符{8,}表示至少8个

数字:

python 复制代码
r = re.compile(r'\d+')
    e = r.search(s)
    number = False
    if e is None:
        print('没有一个数字,不是强口令')
    else:
        print('数字合格')
        number = True

\d表示匹配数字,后面添加了一个'+',代表至少匹配一个数字。

小写:

python 复制代码
r = re.compile(r'[a-z]+')
    e = r.search(s)
    L_letters = False
    if e is None:
        print('没有小写字母')
    else:
        print('小写字母合格')
        L_letters = True

a-z\]直接匹配a到z内的字母,'\[a-z\]+'表示匹配一个或多个小写字母。 大写: ```python r = re.compile(r'[A-Z]+') e = r.search(s) U_letters = False if e is None: print('没有大写字母') else: print('大写字母合格') U_letters = True ``` \[A-Z\]匹配大写字母,'\[A-Z\]+'匹配一个或多个大写字母。 若 length is True and L_letters is True and U_letters is True and number is True,那么就是强口令了。 完整代码如下: ```python import re def super_safe_pw(s): r = re.compile(r'.{8,}') e = r.search(s) length = False if e is None: # r.search(s) is None 而不是e.group() print('长度低于8') else: print('长度合格') length = True r = re.compile(r'\d+') e = r.search(s) number = False if e is None: print('没有一个数字,不是强口令') else: print('数字合格') number = True r = re.compile(r'[a-z]+') e = r.search(s) L_letters = False if e is None: print('没有小写字母') else: print('小写字母合格') L_letters = True r = re.compile(r'[A-Z]+') e = r.search(s) U_letters = False if e is None: print('没有大写字母') else: print('大写字母合格') U_letters = True if length is True and number is True and L_letters is True and U_letters is True: print(f'{s}是强口令') else: print('不是强口令') d = 'jij25865Y' super_safe_pw(d) ``` 结果: ```python 长度合格 数字合格 小写字母合格 大写字母合格 jij25865Y是强口令 ``` 如有错误,欢迎指出。如果疑问,我会再评论区回复。如果有更好的代码,希望能够分享一下。

相关推荐
云泽野2 小时前
【Java|集合类】list遍历的6种方式
java·python·list
IMPYLH3 小时前
Python 的内置函数 reversed
笔记·python
计算机毕设定制辅导-无忧学长4 小时前
西门子 PLC 与 Modbus 集成:S7-1500 RTU/TCP 配置指南(一)
服务器·数据库·tcp/ip
小赖同学啊5 小时前
物联网数据安全区块链服务
开发语言·python·区块链
程序员柳5 小时前
基于微信小程序的校园二手交易平台、微信小程序校园二手商城源代码+数据库+使用说明,layui+微信小程序+Spring Boot
数据库·微信小程序·layui
码荼5 小时前
学习开发之hashmap
java·python·学习·哈希算法·个人开发·小白学开发·不花钱不花时间crud
梦在深巷、5 小时前
MySQL/MariaDB数据库主从复制之基于二进制日志的方式
linux·数据库·mysql·mariadb
风清再凯6 小时前
自动化工具ansible,以及playbook剧本
运维·自动化·ansible
深圳安锐科技有限公司6 小时前
深圳安锐科技发布国内首款4G 索力仪!让斜拉桥索力自动化监测更精准高效
运维·安全·自动化·自动化监测·人工监测·桥梁监测·索力监测
IT乌鸦坐飞机6 小时前
ansible部署数据库服务随机启动并创建用户和设置用户有完全权限
数据库·ansible·centos7