whileloop条件不触发

时间:2018-04-19 04:07:44

标签: python-3.x while-loop

Apply

你好,我有一个应该上学的项目,我似乎无法得到我需要的结果。这是一个更大的程序的一部分,但我遇到的问题是whileloop认识到它应该在OrcHealth等于或小于0时​​结束。另一个条件,((Action!= 0))工作正常。

我可以多次攻击它,但OrcHealth将显示例如-11,而不会使whileloop终止。我是否写错了或错过了什么?

3 个答案:

答案 0 :(得分:1)

使用or表示如果 条件为True,那么您的循环将继续。如果break低于OrcHealth,请考虑使用0跳出循环。像这样:

while action != 0:
    if action == 1:
        heroAttack = random.randint(1,5)
        orcHealth = orcHealth - heroAttack
        if orcHealth <= 0:
            break  # this will end the loop
        print("You see an opening, this is your chance! You swing your blade and do",heroAttack,"to the orc.\n This brings the beast down to", orcHealth)
        action = int(input("You grip your sword tightly and think about what to do next.")
else:
      print("The battle is over.")

答案 1 :(得分:0)

问题在于你的while循环逻辑。它应该说明

while ((OrcHealth > 0)) or ((Action != 0)):

因为你确实希望循环继续而#34; Orc&#34;还活着,没死。

答案 2 :(得分:0)

or替换为and,并检查兽人健康状况是否大于0。

循环没有退出,因为,如果Orc&#34;死了&#34;,则第一个条件不断得到满足。但即使你修复了这个问题,只要继续输入&#34; 1&#34;,就会满足第二个条件。由于or检查是否满足任一条件,因此您始终可以获得真实结果。所以你真正想要的是确保所有这些都是真的:

  1. 兽人活着。
  2. 最后一项行动是不退出。
  3. 只有这样我们才能重新提示攻击。您可以and将它们组合在一起来满足此标准。