首页 > 解决方案 > 满足条件时如何使两个循环都结束?

问题描述

#Knights and Fighters 

Knight_HP = int(input("Enter the Knight's HP: "))
Knight_Damage = int(input( "Enter the Knight's Damage Attack: "))
Knight_Special = int(input("Enter the Knight's Special Attack damage: "))
Fighter_HP = int(input("Enter the Fighter's HP: "))
Fighter_Damage = int(input( "Enter the Fighter's Damage Attack: "))
Fighter_Special = int(input("Enter the Fighter's Special Attack damage: "))
print (" ")
Round_N = 0

while Knight_HP and Fighter_HP > 0:
    print (" ")
    print ("Round: " + str(Round_N)) 
    for i in range(2):

        if i == 0:
            print ("The Knight goes first")
            Fighter_HP = Fighter_HP - Knight_Damage
            print ("Fighter: " + str(Fighter_HP))
            print ("Knight: " + str(Knight_HP))
            print ("")

        else:
            print ("The Fighter goes first")
            Knight_HP = Knight_HP - Fighter_Damage
            print ("Knight: " + str(Knight_HP))
            print ("Fighter: " + str(Fighter_HP))
            print (" ")
        Round_N = Round_N + 1
        if Knight_HP < Fighter_Special:
            print ("Fighter Has Used Special Attack.")
            print ("Knight Has Been Defeated.")
            print ("Round Over")
            break

        elif Fighter_HP < Knight_Special:
            print ("Knight Has Used Special Attack")
            print ("Fighter Has Been Defeated.")
            print ("Round Over")
            break

我希望两个循环在其中一个的 HP 为 0 时中断(即当它使用特殊攻击时),但由于某种原因,它会继续循环,而不是在我需要时中断循环。轮数也会跳过一些轮次(0、2、4、6 等),这也让我很烦。

标签: pythonpython-3.x

解决方案


将它放在一个函数中并使用return它将结束该函数的所有其他操作。

例如

def update_round():
    while Knight_HP and Fighter_HP > 0:
        print (" ")
        print ("Round: " + str(Round_N)) 
        for i in range(2):

            #  other ifs

            if Knight_HP < Fighter_Special:
                print ("Fighter Has Used Special Attack.")
                print ("Knight Has Been Defeated.")
                print ("Round Over")
                return  # use return instead of break

推荐阅读