You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

密码验证程序功能优化需求及代码评审请求

密码验证程序修改与代码评审

修改后的代码(满足需求)

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 16:13:32