The*_*nac 1 python loops while-loop
我在制作这个循环工作时遇到了麻烦,任何帮助/建议都会非常感激.
这是循环(它不是完整的程序):
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!")
Run Code Online (Sandbox Code Playgroud)
而不是:
while your_health or enemy_health >= 10:
Run Code Online (Sandbox Code Playgroud)
我想你的意思是:
while your_health >= 10 or enemy_health >= 10:
Run Code Online (Sandbox Code Playgroud)
你所拥有的是正确的英语,因为"虽然(你的健康或敌人的健康)大于10",但计算机语言的语法更加严格.
对于计算机,这意味着"在(你的健康)或(敌人的健康状况大于10)",并且,在真值的情况下,许多语言将简单地将非零值视为真.Python 确实遵循该约定.
在布尔运算,以及当表达式通过控制流语句使用的情况下,下面的值被解释为假:假,无,数字零所有类型的,和空字符串和容器(包括字符串,元组,列表,字典,集和frozensets).所有其他值都被解释为true.
(我的大胆).声明如下:
while your_health or enemy_health >= 10:
Run Code Online (Sandbox Code Playgroud)
是有效的(假设它是数字的,你永远不会让它在你的代码中低于零,给出其预期目的的合理假设):
while (your_health > 0) or (enemy_health >= 10):
Run Code Online (Sandbox Code Playgroud)
换句话说,循环将只要你的球员有继续任何健康,而不是十个或更多的健康加分.