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

如何在函数中正确遍历列表 避免登录校验结果重复输出

问题根源
  • 错误提示逻辑写在了users列表的遍历循环内部,每匹配失败一个用户就会触发一次错误输出,输入错误的账号密码时,有多少个用户就会输出多少条错误提示
  • 全局变量loged_in在函数内部修改时未声明global,且原代码错误使用比较运算符==做赋值操作,即使登录成功也无法修改全局登录状态,会一直触发循环
  • 存在冗余的类型转换逻辑,密码输入时已转为字符串,后续判断时无需重复转换
调整后完整代码
users = [{"username":"tom", "password":1234},{"username":"pete", "password":1234},{"username":"lisa", "password":1234}]

loged_in = False

def login():
    global loged_in
    while not loged_in:
        username_check = input("Please enter your username: ")
        password_check = str(input("Please enter your password: "))
        # 标记本次输入是否匹配到有效用户
        is_match = False
        for user in users:
            if username_check == user["username"] and password_check == str(user["password"]):
                is_match = True
                break
        # 遍历完全部用户后统一输出结果,仅触发一次
        if is_match:
            print("Welcome, you're logged in.")
            loged_in = True
        else:
            print("Wrong username or password, please try again.")
核心调整点
  • 新增is_match标记位,遍历用户列表时仅记录匹配结果,不直接输出提示
  • 将成功/失败提示逻辑移到遍历循环外部,无论有多少个用户,单次输入只会输出一次结果
  • 修正全局变量修改逻辑:新增global声明,使用赋值运算符=修改登录状态,避免死循环
  • 删除冗余的重复类型转换逻辑,移除无用的函数入参log

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:39:03