Python安全密码校验程序错误排查及功能实现咨询
原代码问题梳理
- 子串校验逻辑不完整:仅能匹配全小写的
umgc,无法覆盖大小写组合的场景,且写法'u''m''g''c'不规范 - 长度校验逻辑错误:没有调用
len(password)获取密码实际长度,长度阈值规则和需求完全不符 - 缺失
#符号相关的所有校验逻辑 - 存在语法错误:
else password[0:3])是无效代码,没有对应判断逻辑
修正后完整代码
# 可自行修改最小、最大允许密码长度 MIN_PWD_LEN = 8 MAX_PWD_LEN = 20 password = input("请输入候选密码:").strip() valid = True error_msg = [] # 校验长度规则 pwd_length = len(password) if pwd_length < MIN_PWD_LEN or pwd_length > MAX_PWD_LEN: valid = False error_msg.append(f"密码长度需在{MIN_PWD_LEN}到{MAX_PWD_LEN}字符之间") # 校验不含任意大小写组合的umgc子串 if "umgc" in password.lower(): valid = False error_msg.append("密码不能包含任意大小写组合的子串umgc") # 校验#符号规则 if "#" not in password: valid = False error_msg.append("密码必须包含#符号") else: if password[0] == "#" or password[-1] == "#": valid = False error_msg.append("#符号不能出现在密码的首位或末位") # 输出结果 if valid: print("密码有效") else: print("密码无效,具体原因:") for msg in error_msg: print(f"- {msg}")
逻辑说明
- 开头定义的最小、最大长度常量可根据需求自由调整,满足自定义长度阈值的要求
- 所有校验规则依次执行,会收集全部不符合项后统一输出,无需用户多次试错
- 将密码统一转为小写后检查是否包含
umgc,可覆盖所有大小写组合的场景 - 完整实现
#符号的存在性校验、首尾位置校验,完全匹配需求规则
内容的提问来源于stack exchange,提问作者Kayla
相关产品推荐
相关产品推荐

