Apply
你好,我有一个应该上学的项目,我似乎无法得到我需要的结果。这是一个更大的程序的一部分,但我遇到的问题是whileloop认识到它应该在OrcHealth等于或小于0时结束。另一个条件,((Action!= 0))工作正常。
我可以多次攻击它,但OrcHealth将显示例如-11,而不会使whileloop终止。我是否写错了或错过了什么?
答案 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
检查是否满足任一条件,因此您始终可以获得真实结果。所以你真正想要的是确保所有这些都是真的:
只有这样我们才能重新提示攻击。您可以and
将它们组合在一起来满足此标准。