某网站规定注册账号时密码必须达到一定强度才可以。他们规定密码长度至少6位,数字、大写字母、小写字母、符号(~!@#$%^&*()[]}{|<>?/.,:"';)这四类中至少包含三类才合格。现在请你写一段程序来判断一个密码是否合格。
时间: 2023-06-05 10:47:07 浏览: 153
以下是Python代码实现:
password = input("请输入密码:")
# 判断密码长度是否大于等于6
if len(password) < 6:
print("密码长度不足6位")
else:
# 判断密码是否包含数字、大写字母、小写字母、符号中的三类
count = 0
if any(char.isdigit() for char in password):
count += 1
if any(char.isupper() for char in password):
count += 1
if any(char.islower() for char in password):
count += 1
if any(char in "~!@#$%^&*()[]}{|<>?/.,:\"';" for char in password):
count += 1
if count >= 3:
print("密码合格")
else:
print("密码不符合要求")
相关问题
正则表达式实现账号口令长度应至少 12 位: 口今应包括数字、小写字母、大写字母、特殊符号 4 类中至少 3 类: 口今应与账号(用户名 ) 无相关性,口令不得包含账号的完整字符串、大小写变位或形似变换的字符串;口令设置应避免键盘排序密码。
以下是一个符合要求的正则表达式:
```
^(?=.{12,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+~`\-={}[\]:;"'<>,.?/]).*$
```
该正则表达式的含义如下:
- `^` 表示匹配字符串的开头
- `(?=.{12,})` 表示后面的字符串长度必须大于等于12个字符
- `(?=.*\d)` 表示后面的字符串必须包含数字
- `(?=.*[a-z])` 表示后面的字符串必须包含小写字母
- `(?=.*[A-Z])` 表示后面的字符串必须包含大写字母
- `(?=.*[!@#$%^&*()_+~`\-={}[\]:;"'<>,.?/])` 表示后面的字符串必须包含特殊符号
- `.*` 表示匹配任意字符任意次数,这里是为了满足以上条件
- `$` 表示匹配字符串的结尾
此外,为了避免口令与账号相关,可以在正则表达式中加入以下条件:
- 账号的完整字符串不得出现在口令中:`(?!\S*(?:用户名)\S*)`,其中“用户名”应该替换为实际的账号字符串
- 口令不得包含大小写变位或形似变换的字符串:可以通过编程的方式来实现
至于如何避免键盘排序密码,可以通过禁止使用连续的键位或常用的键位组合来实现。
很多网站初始密码都是“123456”,为保障账号安全,第一次登录会强制修改密码为加强密码,已知某网站加强密码需要同时满足以下规定:长度为6-16;必须同时包含大写字母、小写字符、数字和特殊符号;首位必须为大写字母。 请你编写一个程序,判断用户设置的密码是否为加强密码。 输入格式: 输入第一行为一个整数T(1<=T<=20),代表测试数据的组数,随后T行,每行都是由小写字母、大写字母、数字、特殊符号组成的一串字符s,长度不超过20,特殊符号有且仅有@、#、$、%、^、&、*。 输出格式: 输出每行字符串是否为加强密码,是,输出“Yes”,不是,输出“No”,每组输出占一行。
#、$、&、*、!六种。
输出格式: 对于每组测试数据,如果密码符合加强密码规定,则输出“Yes”,否则输出“No”。
样例输入:
2
abc123#
Abc123#
样例输出:
No
Yes
解释: 对于第一组测试数据,虽然包含字母、数字和特殊符号,但长度不足6位,不符合加强密码规定;对于第二组测试数据,包含大写字母、小写字母、数字和特殊符号,长度为7,首位为大写字母,符合加强密码规定。