用Python校验密码是否合法:1.输入一个密码要求长度在8-10位:len()函数 2.密码里面必须包含:大写字母、小写字母和数字:用集合 3.最多输入5次:for 循环
时间: 2024-02-23 15:57:53 浏览: 176
好的,以下是Python代码实现:
```python
for i in range(5):
password = input("请输入密码:")
if 8 <= len(password) <= 10 and set(password).intersection(set("0123456789")) and \
set(password).intersection(set("abcdefghijklmnopqrstuvwxyz")) and \
set(password).intersection(set("ABCDEFGHIJKLMNOPQRSTUVWXYZ")):
print("密码合法!")
break
else:
print("密码不合法!请重新输入!")
```
解释一下代码:
- `for i in range(5):` 表示循环5次,即最多输入5次;
- `password = input("请输入密码:")` 表示让用户输入密码;
- `len(password)` 表示获取密码的长度;
- `set(password)` 表示将密码转换成集合类型;
- `set("0123456789")` 表示包含数字的集合;
- `set("abcdefghijklmnopqrstuvwxyz")` 表示包含小写字母的集合;
- `set("ABCDEFGHIJKLMNOPQRSTUVWXYZ")` 表示包含大写字母的集合;
- `set(password).intersection(set("0123456789"))` 表示求密码集合与数字集合的交集;
- `set(password).intersection(set("abcdefghijklmnopqrstuvwxyz"))` 表示求密码集合与小写字母集合的交集;
- `set(password).intersection(set("ABCDEFGHIJKLMNOPQRSTUVWXYZ"))` 表示求密码集合与大写字母集合的交集;
- `if 8 <= len(password) <= 10 and set(password).intersection(set("0123456789")) and \
set(password).intersection(set("abcdefghijklmnopqrstuvwxyz")) and \
set(password).intersection(set("ABCDEFGHIJKLMNOPQRSTUVWXYZ")):` 表示如果密码长度在8-10之间,并且包含大写字母、小写字母和数字,则密码合法;
- `print("密码合法!")` 表示输出密码合法提示信息;
- `break` 表示退出循环;
- `else:` 表示如果循环正常结束但没有找到合法密码,则输出密码不合法提示信息。
阅读全文