鱼C论坛

 找回密码
 立即注册
查看: 1928|回复: 4

[已解决]如何跳出while双循环,求救

[复制链接]
发表于 2023-7-16 13:35:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

def funE():
    name = input("请输入用户名:")
    while 1:
        if name in dict1:
            temp = input("请输入密码:")
            while 1:
                if dict1[name] == 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[name] == temp:                    print("欢迎您进入游戏,祝您游戏愉快")                    game_started = True  # 设置游戏已开始的标志                    break                else:                    temp = input("密码错误,请重新输入密码:")                    continue        else:            name = input("您输入的用户名不存在,请重新输入:")            continue        if game_started:            break  # 跳出外层循环funE()
这样,当成功登录后,程序将跳过提示输入密码的部分,直接跳出循环。注意要在适当的位置修改 game_started 标志的值。希望这能解决你的问题!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[name] == temp:                    print("欢迎您进入游戏,祝您游戏愉快")                    game_started = True  # 设置游戏已开始的标志                    break                else:                    temp = input("密码错误,请重新输入密码:")                    continue        else:            name = input("您输入的用户名不存在,请重新输入:")            continue        if game_started:            break  # 跳出外层循环funE()
这样,当成功登录后,程序将跳过提示输入密码的部分,直接跳出循环。注意要在适当的位置修改 game_started 标志的值。希望这能解决你的问题!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[name] == temp:
                    print("欢迎您进入游戏,祝您游戏愉快")
                    authenticated = True  # 设置标志为True,跳出外层循环
                    break
                else:
                    temp = input("密码错误,请重新输入密码:")
        else:
            name = input("您输入的用户名不存在,请重新输入:")
在这个例子中,当用户成功验证时,我们将 authenticated 设置为 True ,这会使得外部循环终止。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-16 19:26:24 | 显示全部楼层
事实上这样的小段代码不需要这样复杂:
def funE():
    name = input("请输入用户名:")
    while 1:
        if name in dict1:
            temp = input("请输入密码:")
            while 1:
                if dict1[name] == 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-16 19:27:01 | 显示全部楼层
cjjJasonchen 发表于 2023-7-16 19:26
事实上这样的小段代码不需要这样复杂:

还有任何问题欢迎追问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 11:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表