密码验证程序功能优化需求及代码评审请求
密码验证程序修改与代码评审
修改后的代码(满足需求)
import re while True: password = input("Enter your password: ") errors = [] # 检查密码长度 if not 6 <= len(password) <= 16: errors.append("密码长度需在6-16个字符之间") # 检查是否包含小写字母 if not re.search("[a-z]", password): errors.append("必须包含小写字母") # 检查是否包含大写字母 if not re.search("[A-Z]", password): errors.append("必须包含大写字母") # 检查是否包含数字 if not re.search("[0-9]", password): errors.append("必须包含数字") # 检查是否允许的特殊字符 if not re.search("[$#@]", password): errors.append("必须包含$#@中的一种特殊字符") # 检查是否包含空格 if re.search(r"\s", password): errors.append("密码不能包含空格") if not errors: print("Password Validated") break else: print("invalid password") # 输出所有错误提示 for error in errors: print(f"- {error}")
原代码评审问题
- 缺失依赖导入:原代码使用
re.search但未导入re模块,运行会触发NameError。 - 循环逻辑失效:原while循环仅检查长度,不符合条件就直接break,无法实现重新输入的需求;长度检查通过才进入else块验证其他规则,逻辑割裂。
- 错误提示不全面:用
elif串联规则检查,只能反馈第一个不符合的问题,无法一次性告知用户所有错误,增加用户试错成本。 - 错误处理不完整:长度不符合时直接终止循环,没有引导用户重新输入;未按要求在密码不符合规则时统一提示"invalid password"。
- 规则检查顺序不合理:空格检查放在最后一个elif分支,仅当前面所有规则都满足时才会执行,逻辑上应与其他规则平级检查。
内容的提问来源于stack exchange,提问作者honchoest
相关产品推荐
相关产品推荐

