Почему мое утверждение » еще » срабатывает иногда, но не всегда?

#python #if-statement

Вопрос:

Я пытаюсь создать приключенческую игру с некоторыми боевыми действиями.

Однако, в

 else:  print("The werewolf took "   str(damage)   " damage. "   str(werewolf_health)   " health remains.")   

триггер (и код под ним) срабатывает только иногда. Не могли бы вы помочь мне понять, почему?

Это и есть код:

 def attack():  werewolf_health = 100  user_health = 100  while werewolf_health gt; 0:  attack = input("gt;").upper()  if "ATTACK" in attack:  damage = rand_int()  damage2 = rand_int_werewolf()  if damage == 20:  print(random.choice(sword_crit))  damage = damage * 1.5  werewolf_health = werewolf_health - damage  print("The werewolf took "   str(damage)   " damage. "   str(werewolf_health)   " health remains.")  if werewolf_health lt;= 0:  print(random.choice(werewolf_death))  resolution()  elif 17 lt;= damage lt;= 19:  print(random.choice(sword_above_avg))  werewolf_health = werewolf_health - damage  print("The werewolf took "   str(damage)   " damage. "   str(werewolf_health)   " health remains.")  if werewolf_health lt;= 0:  print(random.choice(werewolf_death))  resolution()  elif 6 lt;= damage lt;= 16:  print(random.choice(sword_avg))  werewolf_health = werewolf_health - damage  if werewolf_health lt;= 0:  print(random.choice(werewolf_death))  resolution()  else:  print("The werewolf took "   str(damage)   " damage. "   str(werewolf_health)   " health remains.")  damage2 = rand_int_werewolf()  if damage2 == 20:  print(random.choice(werewolf_crit))  damage2 = damage2 * 1.5  user_health = user_health - damage2  print("You take "   str(damage2)   " damage. "   "Your health drops to "   str(  user_health)   ".")  

Комментарии:

1. может быть, это вмятина вашего другого? Потому что, как бы то ни было, ваш else срабатывает только в том случае, ЕСЛИ elif 6 lt;= урон Потому что у вас есть основное утверждение IF, а затем утверждения Elif, но если вы хотите, чтобы остальное было тем, чем не являются ELIF, вам нужно, чтобы оно соответствовало остальным утверждениям elif, если я правильно понимаю

2. @troy Но это то, к чему я стремлюсь, для elif 6 lt;= урон И только тогда, если werewolf_health все еще «жив», начнется атака оборотня. Но по какой-то причине это не срабатывает. Даже если werewolf_health все еще превышает 0

3. может damage быть lt; 6 , это или gt; 20 ?

4. Где хранится переменная для werewolf_health? Возможно, var werewolf_health обновляется не так, как вы предполагали.