如何放置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
相关产品推荐
相关产品推荐

