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

如何放置While循环?实现条件变量为True时终止循环(附代码)

解决你的While循环添加问题

嘿,我来帮你搞定这个登录循环的需求!首先得提个小细节:你当前的checkLogin函数里的loggedIn是局部变量,修改它不会影响全局的loggedIn变量,所以我们可以直接用函数的返回值来控制循环(这也是更符合Python最佳实践的方式)。

接下来,循环的放置位置很明确:把获取用户凭证和验证登录的逻辑包裹在while循环里,循环的条件就是not loggedIn。这样只要登录失败(loggedIn为False),就会重复执行输入凭证、验证的流程,直到登录成功为止。

下面是修改后的完整代码,我标注了关键的修改点:

loggedIn = False
# 补充管理员列表定义(原代码缺失,否则会报错)
adminList = [{"username": "admin1", "password": "pass1"}, {"username": "admin2", "password": "pass2"}]

# 创建名为`getCreds`的函数,用于提示用户输入用户名和密码
def getCreds():
    # 提示用户输入用户名并存储到变量username中
    username = input("Username: ")
    # 提示用户输入密码并存储到变量password中
    password = input("Password: ")
    # 创建存储收集到的所有用户数据的字典,命名为userInfo
    userInfo = {"username":username,"password":password}
    # 返回上述字典(userInfo)
    return userInfo

# 创建名为`checkLogin`的函数,用于验证凭证是否匹配管理员列表
def checkLogin(userInfo):
    # 用in判断更简洁,适配管理员列表扩容场景
    if userInfo in adminList:
        print("YOU HAVE LOGGED IN!")
        return True
    # 否则,打印分隔线并返回False
    else:
        print("---------")
        return False

# 核心循环:未登录时持续执行登录流程
while not loggedIn:
    # 获取用户信息
    userInfo = getCreds()
    # 验证登录,用返回值更新全局登录状态
    loggedIn = checkLogin(userInfo)

我还做了个小优化:把原有的逐个判断凭证的逻辑改成userInfo in adminList,这样以后管理员列表扩容时,不用修改判断逻辑,代码更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:04:38