1 问题
编写代码验证密码是否满足以下条件:长度位于[6,20]之间,必须包含至少一个大写字母,一个小写字母,一个数字和一个特殊字符,最终返回True或False,并写明不符合的原因。
2 方法
借助于正则表达式检验密码是否规范,需先导入python中的re模块,re.findall(r"[a-z]", password)则表示在password中必须搜索到小写字母,其他检测以此类推,而特殊字符的检测需要表示为re.findall(r"[^0-9A-Za-z]", password),添加一个‘^’表示除0-9A-Za-z以外的字符。
代码清单1
import re
def check_password(password):
if not 6 <= len(password) <= 20:
return False, "密码必须在6~20之间"
if not re.findall(r"[a-z]", password):
return False, "必须包含至少一个小写字母"
if not re.findall(r"[A-Z]", password):
return False, "必须包含至少一个大写字母"
if not re.findall(r"[0-9]", password):
return False, "必须包含至少一个数字"
if not re.findall(r"[^0-9A-Za-z]", password):
return False, "必须包含至少一个特殊字符"
return True, None
print("Helloworld*678", check_password("Helloworld*678"))
print("Helloworld#", check_password("Helloworld#"))
print("helloworld#678", check_password("helloworld#678"))
print("Helloworld678", check_password("Helloworld678"))
3 结语
针对验证密码格式是否规范的问题,提出导入re模块对相关条件依次进行检验的方法,通过此次实验,证明该方法是有效的。