题目描述 在各种信息系统注册时通常需要设置用户名与密码,密码的设置既要方便用户记忆又要有足够的安全性。例如,某信息系统的登录密码设置时要求由8~20位英文字符组成,包含英文的大写字母、小写字母、数字、标点符号至少3种,不能含有空格字符。其中,标点符号为:!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~。给定用户设置的密码,请判断是否满足以上要求。 输入 第一行一个正整数n,表示测试用例的个数。其后的每一行一个字符串,表示用户设置的密码。 输出 每行输出验证结果,如果密码满足要求则输出True,否则输出False。 样例输入 Copy 20 abcABC@123 changshaHUNAN _2049HUNANasdfghjklmn aB@4 567 aB@1234 abCD56:) abcd56:) ABCD56:) abcDEF:) abcDEF78 ABCDefgh ABCD5678 ABCD+-*/ abcd5678 abcd+-*/ 1234+-*/ abcdefgh ABCDEFGH 12345678 !@#$%^&* 样例输出 Copy True False False False False True True True True True False False False False False False False False False False用Python解答
时间: 2024-03-25 11:35:29 浏览: 64
Android为Http设置证书(用户名和密码)
可以使用正则表达式来判断密码是否符合要求。具体实现可以参考以下代码:
```python
import re
n = int(input())
for i in range(n):
password = input().strip()
if re.match(r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!\"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~])[a-zA-Z\d!\"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]{8,20}$', password):
print('True')
else:
print('False')
```
正则表达式中的`^`和`$`表示匹配字符串的开头和结尾,`(?=.*[a-z])`、`(?=.*[A-Z])`、`(?=.*\d)`和`(?=.*[!\"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~])`分别表示密码必须包含小写字母、大写字母、数字和标点符号中的至少三种,`[a-zA-Z\d!\"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]{8,20}`表示密码由8到20位英文字符组成,包含上述四种字符。
阅读全文