Давайте go через ваш код: вы сказали в комментариях, что знаете, что вам нужно где-то while
l oop, так что давайте подумаем, какое условие мы должны наложить на этот l oop. Мы хотим продолжать стрелять до тех пор, пока у нас не кончатся патроны, нас не съедят зомби или у нас не кончатся зомби. Мы можем сделать это, используя all()
, чтобы проверить, что все переменные больше 0:
while all(x > 0 for x in (distance, ammo, zombies)):
Это эквивалентно:
while distance>0 and ammo>0 and zombies>0:
Пока это условие True
, мы хотим применить логику c в вашем вопросе, которая уже была в вашем заявлении if. Вы также хотите напечатать количество убитых зомби, поэтому давайте добавим переменную zombies_shot
, установим ее в 0
в начале функции и будем увеличивать ее каждый раз, когда мы запускаем наш while
l * 1029. *. Теперь у нас есть:
def zombie_shootout(zombies, distance, ammo):
zombies_shot = 0
while all(x>0 for x in (distance, ammo, zombies)):
ammo -= 1
zombies_shot += 1
zombies -= 1
distance -= 0.5
Итак, теперь нам нужно проверить условия после того, как мы вышли из while
l oop. У вас это тоже почти получилось, но давайте также проверим, остались ли еще зомби, в противном случае, если мы застрелим последнего зомба ie, например, перед тем, как он достигнет нас, ваша функция все равно скажет, что нас съели. Мы также можем использовать новую переменную zombies_shot
.
if ammo <= 0 and zombies > 0:
print("You shot",zombies_shot,"zombies before being eaten: ran out of ammo.")
elif distance <= 0 and zombies > 0:
print("You shot",zombies_shot,"zombies before being eaten: overwhelmed.")
else:
print("You shot all", zombies_shot,"zombies.")
Мы могли бы также добавить return
операторы вместо print
операторов, но это ваше дело. Наша полная функция теперь:
def zombie_shootout(zombies, distance, ammo):
zombies_shot = 0
while all(x>0 for x in (distance, ammo, zombies)):
ammo -= 1
zombies_shot += 1
zombies -= 1
distance -= 0.5
if ammo <= 0 and zombies > 0:
print("You shot",zombies_shot,"zombies before being eaten: ran out of ammo.")
elif distance <= 0 and zombies > 0:
print("You shot",zombies_shot,"zombies before being eaten: overwhelmed.")
else:
print("You shot all", zombies_shot,"zombies.")