如何让代码持续循环?修复用户名密码验证的循环逻辑问题
用户登录验证逻辑修正
需求说明
需要实现以下登录验证逻辑:
- 若输入的用户名不是
player 1,重复提示player name invalid并要求重新输入 - 用户名验证通过后进入密码验证环节,密码输入正确则提示
yes you are in,否则重复提示please try again
原代码问题
用户编写的代码如下:
correct_n="player 1" while True: Name1 = input ("Enter Your Name: ") if Name1 == correct_n: cp = 'password' while True: password= input("enter the password ") if password == cp: print ("yes you are in") break print("please try again") else: print("Player name not valid") break print("player name invalid")
这段代码无法实现预期效果,核心问题:
- 外层
while True循环中的break语句会强制跳出循环,导致用户名仅验证一次就结束流程 - 用户名验证的错误提示
else分支缩进错误,属于内层密码循环的else(实际永远不会执行),而非用户名判断的else - 末尾的
print("player name invalid")会在循环结束后无条件输出,不符合逻辑
修正后的代码
correct_n = "player 1" correct_p = "password" # 用户名验证循环 while True: name = input("Enter Your Name: ") if name == correct_n: # 密码验证循环 while True: password = input("Enter the password: ") if password == correct_p: print("yes you are in") # 密码正确,直接终止程序 exit() print("please try again") else: print("player name invalid")
修正说明
- 外层循环专注于用户名验证:用户名错误时提示并继续循环,正确则进入密码验证环节
- 密码验证循环中,密码正确时用
exit()直接终止程序(也可使用标志变量或嵌套break退出多层循环),错误则重复提示 - 移除了多余的强制输出语句,确保提示信息仅在对应错误场景下触发
内容的提问来源于stack exchange,提问作者Mali
相关产品推荐
相关产品推荐

