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

news/发布时间2024/6/15 18:57:21

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

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

长度:

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

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

r = re.compile(r'.{8,}')

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

数字:

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

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

小写:

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

[a-z]直接匹配a到z内的字母,‘[a-z]+’表示匹配一个或多个小写字母。

大写:

r = re.compile(r'[A-Z]+')e = r.search(s)U_letters = Falseif 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,那么就是强口令了。

完整代码如下:

import redef super_safe_pw(s):r = re.compile(r'.{8,}')e = r.search(s)length = Falseif e is None:  # r.search(s) is None 而不是e.group()print('长度低于8')else:print('长度合格')length = Truer = re.compile(r'\d+')e = r.search(s)number = Falseif e is None:print('没有一个数字,不是强口令')else:print('数字合格')number = Truer = re.compile(r'[a-z]+')e = r.search(s)L_letters = Falseif e is None:print('没有小写字母')else:print('小写字母合格')L_letters = Truer = re.compile(r'[A-Z]+')e = r.search(s)U_letters = Falseif e is None:print('没有大写字母')else:print('大写字母合格')U_letters = Trueif 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)

结果:

长度合格
数字合格
小写字母合格
大写字母合格
jij25865Y是强口令

如有错误,欢迎指出。如果疑问,我会再评论区回复。如果有更好的代码,希望能够分享一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.shwantai.cn/a/31654207.html

如若内容造成侵权/违法违规/事实不符,请联系万泰站长网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

【c++】简单的日期计算器

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 朋友们大家好啊,在我们学习了默认成员函数后,我们本节内容来完成知识的实践,来实现一个简易的日期计算器 目录 头文件声明函数函数的实现1.全缺省默认构…

LED和蜂鸣器和面包板

LED:长脚正极,短脚负极,正向通电亮,反向通电不亮 蜂鸣器: 有源蜂鸣器,内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。无源蜂鸣器,内部不带振荡源,需要控制…

Spring事务介绍

注意: 研究事务的传播行为的前提是下面两种中的任一种: serviceImplA中的事务方法调用serviceImplB中的事务方法(这种情况下Mapper可以同一个);同一个XxxServiceImpl中的方法A调用B,但Mapper不能为同一个&…

后端常问面经之Java基础

基本数据类型 Java中有8种基本数据类型: 6种数字类型: 4种整数型:byte、short、int、long 2种浮点型:float、double 1种字符类型:char 1种布尔类型:boolean 数据类型的默认值以及所占空间如下&#x…

01_安装VMwareWorkstation虚拟机

环境:Win10 19045 软件版本:VMware-workstation-17.5.1 一、下载链接 Download VMware Workstation Pro 二、安装(无脑下一步) 安装位置自选,最好非系统盘。 增强型键盘驱动自选。 更新自选。 快捷方式自选。 三、…

Hive on Spark 配置

目录 1 Hive 引擎简介2 Hive on Spark 配置2.1 在 Hive 所在节点部署 Spark2.2 在hive中创建spark配置文件2.3 向 HDFS上传Spark纯净版 jar 包2.4 修改hive-site.xml文件2.5 Hive on Spark测试2.6 报错 1 Hive 引擎简介 Hive引擎包括:MR(默认&#xff09…