首页 > 解决方案 > 打破while循环

问题描述

所以这是我更大代码的简化版本(在我的主代码中有一些不必要的位更有意义),我似乎无法理解为什么它既没有打破播放也没有打破战斗循环:

fight = True
a = "enemy"
t = "" 
ccd = False,False
playing = True

def lvl():
    playing = True
    fight = True    
    while fight:
        if a == "enemy":
            t = "enemy"
        else:
            if a == "enemy":
                t = "enemy"
            else:
                t = "player"
        while t == "enemy":
            print ("enemy attacks player")
            t = "player"
        while t == "player":
            if ccd == (False , False):
                fight = False
                playing = False
                turn = "no one"
            t = "enemy"

fight = True
while playing:
    fight = True
    lvl()
while not playing:
    print ("no")

标签: pythonwhile-loop

解决方案


您的程序实际上正在跳出“战斗”循环,但由于播放循环仍在运行,它被立即送回。

您没有跳出播放循环的原因是您的“播放”变量是本地的,而不是全局的。因此,当您更改函数中的变量时,它不会更改 main 中的变量(即使它们具有相同的名称),您可以使用它来控制 while 循环。一个可能的解决方案是在函数结束时返回“正在播放”。以下是一些修改后的代码,应该适合您的目的:

'''

fight = True
a = "enemy"
t = "" 
ccd = False,False
playing = True

def lvl():
    playing = True
    fight = True    
    while fight:
        if a == "enemy":
            t = "enemy"
        else:
            t = "player"
        while t == "enemy":
            print ("enemy attacks player")
            t = "player"
        while t == "player":
            if ccd == (False , False):
                fight = False
                playing = False
            t = "enemy"
    return playing
fight = True
while playing:
    fight = True
    playing = lvl()
while not playing:
    print ("no")

'''


推荐阅读