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

Python密码检查器:如何高效遍历验证方法并按需重启循环

密码检查器验证逻辑优化方案

你的代码目前的问题是:所有验证函数只负责打印提示,没有返回验证是否通过的结果,所以没法判断是否所有条件都满足,也就无法控制循环在验证失败时重启。

可以按以下步骤修改,实现「任意验证失败就重启循环,全部通过则结束」的逻辑:

1. 修改验证函数,让它们返回布尔值

让每个函数在符合要求时返回True,不符合时返回False,同时保留原有的提示输出:

def check_length(password):
    if len(password) > 8:
        print("Password is long enough. ")
        return True
    else:
        print("Password too short, please try a new password. ")
        return False

def check_numbers(password):
    if len([num for num in password if num.isdigit()]) >= 2:
        print("Password has two digits. ")
        return True
    else:
        print("Password needs two digits, please try a new password. ")
        return False

def check_lower(password):
    if any(map(str.islower, password)):
        print("Password has lower case. ")
        return True
    else:
        print("Password needs a lowercase letter, please try a new password.")
        return False

def check_upper(password):
    if any(map(str.isupper, password)):
        print("Password has upper case. ")
        return True
    else:
        print("Password needs an uppercase letter, please try a new password.")
        return False

注:给函数改了更清晰的名字,同时把password作为参数传入,避免依赖全局变量,代码更规范。

2. 遍历验证函数,控制循环逻辑

把所有验证函数放到一个列表里,在循环中逐个调用,只要有一个验证失败(返回False),就继续下一轮循环;全部通过则退出循环:

while True:
    password = input("What is your password? \n")
    # 定义所有验证规则的列表
    validations = [
        check_length,
        check_numbers,
        check_lower,
        check_upper
    ]
    # 遍历所有验证,检查是否全部通过
    all_passed = True
    for validation in validations:
        if not validation(password):
            all_passed = False
            # 提前终止后续不必要的验证
            break
    if all_passed:
        print("All checks passed! Your password is valid.")
        break

这样只要有任何一个验证失败,all_passed会被设为False,循环会重启;只有当所有验证都返回True时,才会打印成功提示并退出循环。

额外优化:提前终止验证

如果希望在第一个验证失败时就停止后续检查(比如密码太短就不用再检查数字、大小写了),可以在发现验证失败时直接break循环,像上面代码里那样,这样能减少不必要的验证操作。

内容的提问来源于stack exchange,提问作者Tate

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:00:15