我在使用while循环工作时遇到问题,我们非常感谢任何帮助/建议。
这是循环(它不是完整的程序):
import random
while your_health or enemy_health >= 10:
print("He is still attacking you.")
print("you may either:"
"a-dodge"
"b-attack back")
fight_choice_1_1 = input("What do you do?")
if fight_choice_1_1 == "a":
d20_1_1 = random.randint(1, 20)
if d20_1_1 >= 10:
print("you dodge the attack")
elif d20_1_1 <= 10:
your_health -= knife_damage
print("you get hit")
if your_health <= 0:
print("you lose. :(")
elif enemy_health <= 0:
print("you win!")
if fight_choice_1_1 == "b":
d20_1_1 = random.randint(1, 20)
if d20_1_1 >= 10:
print("you get out of the way and hit him")
enemy_health -= sword_damage
elif d20_1_1 <= 10:
print("he hits you, but you get a hit in too")
your_health -= knife_damage
enemy_health -= sword_damage
print("you get hit")
if your_health <= 0:
print("you lose. :(")
elif enemy_health <= 0:
print("you win!")
答案 0 :(得分:9)
而不是:
while your_health or enemy_health >= 10:
我认为你的意思是:
while your_health >= 10 or enemy_health >= 10:
你所拥有的是正确的英语,如同“(你的健康或敌人的健康状况)大于10”,但计算机语言的语法要严格得多。
对于计算机,这意味着“在(你的健康状况)或(敌人的健康状况大于10)”时,并且,在真值的情况下,许多语言只会将非零值视为真。 Python 遵循该惯例。
来自在线Python文档的5.10 Boolean operations:
在布尔运算的上下文中,以及控制流语句使用表达式时,以下值被解释为false: False,None,数字零所有类型,空字符串和容器(包括字符串,元组,列表,字典,集合和frozensets)。 所有其他值都被解释为true。
(我的大胆)。所以声明:
while your_health or enemy_health >= 10:
是有效的(假设它是数字的,你永远不会让它在代码中低于零,给出预期目的的合理假设):
while (your_health > 0) or (enemy_health >= 10):
换句话说,只要您的玩家任何健康状况,而不是十个或更多健康点,循环就会继续。