davidmou 发表于 2023-7-16 13:35:47

如何跳出while双循环,求救


def funE():
    name = input("请输入用户名:")
    while 1:
      if name in dict1:
            temp = input("请输入密码:")
            while 1:
                if dict1 == temp:
                  print("欢迎您进入游戏,祝您游戏愉快")
                  break
                else:
                  temp = input("密码错误,请重新输入密码:")
                  continue
      else:
            name = input("您输入的用户名不存在,请重新输入:")
            continue
当 ("欢迎您进入游戏,祝您游戏愉快")后,如何不再跳到"请输入密码:"
      




陶远航 发表于 2023-7-16 13:36:01

要在达到特定条件后跳出 while 双循环,你可以使用标志变量来控制循环的继续与中断。在需要跳出双循环的地方设置标志变量,然后在合适的位置检查标志变量的值并终止循环。

在你的代码中,你可以添加一个标志变量,例如 game_started,来表示游戏是否已经开始。然后,在成功登录后,将 game_started 的值设为 True,以跳出外层循环。

以下是修改后的代码示例:

def funE():
    name = input("请输入用户名:")
    game_started = False

    while True:
      if name in dict1:
            temp = input("请输入密码:")
            while True:
                if dict1 == temp:
                  print("欢迎您进入游戏,祝您游戏愉快")
                  game_started = True# 设置游戏已开始的标志
                  break
                else:
                  temp = input("密码错误,请重新输入密码:")
                  continue

      else:
            name = input("您输入的用户名不存在,请重新输入:")
            continue

      if game_started:
            break# 跳出外层循环

funE()


这样,当成功登录后,程序将跳过提示输入密码的部分,直接跳出循环。注意要在适当的位置修改 game_started 标志的值。希望这能解决你的问题!

isdkz 发表于 2023-7-16 13:58:55

在Python中,你可以使用 break 语句跳出最近的一层循环。如果你想要从多层嵌套的循环中跳出,你可能需要添加额外的逻辑来达到这个目标。在你的例子中,你可以添加一个标志变量来检查是否应该跳出外部循环。如下所示:

def funE():
    name = input("请输入用户名:")
    authenticated = False
    while not authenticated:
      if name in dict1:
            temp = input("请输入密码:")
            while True:
                if dict1 == temp:
                  print("欢迎您进入游戏,祝您游戏愉快")
                  authenticated = True# 设置标志为True,跳出外层循环
                  break
                else:
                  temp = input("密码错误,请重新输入密码:")
      else:
            name = input("您输入的用户名不存在,请重新输入:")

在这个例子中,当用户成功验证时,我们将 authenticated 设置为 True ,这会使得外部循环终止。

cjjJasonchen 发表于 2023-7-16 19:26:24

事实上这样的小段代码不需要这样复杂:
def funE():
    name = input("请输入用户名:")
    while 1:
      if name in dict1:
            temp = input("请输入密码:")
            while 1:
                if dict1 == temp:
                  print("欢迎您进入游戏,祝您游戏愉快")
                  break
                else:
                  temp = input("密码错误,请重新输入密码:")
                  continue
            break ## ——————————————————只需要在这里加入一个break就可以了
      else:
            name = input("您输入的用户名不存在,请重新输入:")
            continue


if __name__ == "__main__":
    dict1 = {"abc": "123"}
    funE()

运行效果如下:
================ RESTART: D:\Python作品文件\解决论坛问题\2027 6 16 (1).py ================
请输入用户名:asd
您输入的用户名不存在,请重新输入:abc
请输入密码:213
密码错误,请重新输入密码:123
欢迎您进入游戏,祝您游戏愉快


如果你画一个流程图可能会更好的理解这个问题

如果输入了正确的用户名才会进入到输入密码的循环,换言之,如果进入了输入密码的循环,用户名必然是正确的

在你的代码中如果输入密码错误时就会直接跳到循环顶端重新开始执行。

所以在在最后再加一个break就可以完美解决(此时唯一的可能就是密码用户名全正确,因为其他情况都有continue)

cjjJasonchen 发表于 2023-7-16 19:27:01

cjjJasonchen 发表于 2023-7-16 19:26
事实上这样的小段代码不需要这样复杂:




还有任何问题欢迎追问
页: [1]
查看完整版本: 如何跳出while双循环,求救