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

如何让代码持续循环?修复用户名密码验证的循环逻辑问题

用户登录验证逻辑修正

需求说明

需要实现以下登录验证逻辑:

  • 若输入的用户名不是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")

这段代码无法实现预期效果,核心问题:

  1. 外层while True循环中的break语句会强制跳出循环,导致用户名仅验证一次就结束流程
  2. 用户名验证的错误提示else分支缩进错误,属于内层密码循环的else(实际永远不会执行),而非用户名判断的else
  3. 末尾的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:05:17