Python 当条件满足时,如何使两个循环结束? #骑士和战士 骑士的HP=int(输入(“输入骑士的HP:”) 骑士伤害=int(输入(“输入骑士的伤害攻击:”) 骑士特殊=int(输入(“输入骑士的特殊攻击伤害:”) 战斗机的HP=int(输入(“输入战斗机的HP:”) 战斗机的伤害=int(输入(“输入战斗机的伤害攻击:”) 战斗机特殊=int(输入(“输入战斗机的特殊攻击伤害:”) 打印(“”) 四舍五入N=0 当骑士和战斗机的生命>0时: 打印(“”) 打印(“圆形:+str(圆形)) 对于范围(2)中的i: 如果i==0: 打印(“骑士先走”) 战斗机生命=战斗机生命-骑士伤害 打印(“战斗机:+str(战斗机+U HP)) 打印(“骑士:+str(骑士) 打印(“”) 其他: 打印(“战斗机先走”) 骑士生命=骑士生命-战斗机伤害 打印(“骑士:+str(骑士) 打印(“战斗机:+str(战斗机+U HP)) 打印(“”) 圆形=圆形+1 如果骑士HP0。否则,如果Knight\u HP变为负值,而战斗机仍有生命值,则循环将继续。而Knight\u HP和fighter\u HP>0:应该是@chepner评论的内容。任何与0不同的整数都是真实的-因此if-4和Fighter\u HP>0:计算结果为真并进行四舍五入,除非Knight\u HP得到精确的0,否则仍然存在与OPs代码相同的问题-您没有正确测试条件-将其放入函数并使用仅返回掩盖了错误的逻辑。问题是如何打破嵌套循环。使用return是正确的答案。我没有试图修复代码中的其他位,只是展示了一个可以解决他的问题的示例 #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 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

Python 当条件满足时,如何使两个循环结束? #骑士和战士 骑士的HP=int(输入(“输入骑士的HP:”) 骑士伤害=int(输入(“输入骑士的伤害攻击:”) 骑士特殊=int(输入(“输入骑士的特殊攻击伤害:”) 战斗机的HP=int(输入(“输入战斗机的HP:”) 战斗机的伤害=int(输入(“输入战斗机的伤害攻击:”) 战斗机特殊=int(输入(“输入战斗机的特殊攻击伤害:”) 打印(“”) 四舍五入N=0 当骑士和战斗机的生命>0时: 打印(“”) 打印(“圆形:+str(圆形)) 对于范围(2)中的i: 如果i==0: 打印(“骑士先走”) 战斗机生命=战斗机生命-骑士伤害 打印(“战斗机:+str(战斗机+U HP)) 打印(“骑士:+str(骑士) 打印(“”) 其他: 打印(“战斗机先走”) 骑士生命=骑士生命-战斗机伤害 打印(“骑士:+str(骑士) 打印(“战斗机:+str(战斗机+U HP)) 打印(“”) 圆形=圆形+1 如果骑士HP0。否则,如果Knight\u HP变为负值,而战斗机仍有生命值,则循环将继续。而Knight\u HP和fighter\u HP>0:应该是@chepner评论的内容。任何与0不同的整数都是真实的-因此if-4和Fighter\u HP>0:计算结果为真并进行四舍五入,除非Knight\u HP得到精确的0,否则仍然存在与OPs代码相同的问题-您没有正确测试条件-将其放入函数并使用仅返回掩盖了错误的逻辑。问题是如何打破嵌套循环。使用return是正确的答案。我没有试图修复代码中的其他位,只是展示了一个可以解决他的问题的示例 #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 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,python,python-3.x,Python,Python 3.x,我希望当其中一个的HP为0时(即当它使用特殊攻击时),两个循环都会中断,但出于某种原因,它会继续循环,而不是在我需要时中断循环。舍入数也会跳过一些舍入(0、2、4、6等),这也让我感到厌烦。将其放入函数中,然后使用返回这将结束函数的所有其他操作 e、 g def update_round(): 当骑士和战斗机的生命>0时: 打印(“”) 打印(“圆形:+str(圆形)) 对于范围(2)中的i: #其他国际单项体育联合会 如果骑士HP0和Fighter\u HP>0。否则,如果Knight\u H

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

将其放入函数中,然后使用
返回
这将结束函数的所有其他操作

e、 g

def update_round():
当骑士和战斗机的生命>0时:
打印(“”)
打印(“圆形:+str(圆形))
对于范围(2)中的i:
#其他国际单项体育联合会
如果骑士HP<战斗机特殊:
打印(“战斗机使用了特殊攻击。”)
打印(“骑士被击败了。”)
打印(“四舍五入”)
return#使用return而不是break

这是否回答了您的问题?我想你想要的是
Knight\u HP>0和Fighter\u HP>0
。否则,如果
Knight\u HP
变为负值,而战斗机仍有生命值,则循环将继续。
而Knight\u HP和fighter\u HP>0:
应该是@chepner评论的内容。任何与0不同的整数都是真实的-因此
if-4和Fighter\u HP>0:
计算结果为真并进行四舍五入,除非Knight\u HP得到精确的0,否则仍然存在与OPs代码相同的问题-您没有正确测试条件-将其放入函数并使用仅返回掩盖了错误的逻辑。问题是如何打破嵌套循环。使用return是正确的答案。我没有试图修复代码中的其他位,只是展示了一个可以解决他的问题的示例
#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
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