Как переназначить переменную в функции (python)

Я пытался использовать global, но, похоже, он не переназначает переменную. Извините, если на этот вопрос уже был ответ, я не смог найти ответ. Всякий раз, когда я запускаю код, он выводит здоровье по расчету, но не рассчитывает снова например если здоровье 10, и я запускаю функцию, я получаю 7. Если я повторно запускаю, я получаю еще 7; он больше не будет опускаться

def mon_attack(health, monDamage, defense):
    print("The monster attacked!")
    health = health - ((monDamage // defense) + 1)
    print("You have " + str(health) + " health left!")

Хотя в данном конкретном случае, вероятно, было бы проще return новое значение health из функции и переназначить его на сайте вызова.

Carcigenicate 20.12.2020 19:57

Вы должны вернуть health и присвоить возвращаемое значение. health = mon_attack(health, monDamage, defense)

wwii 20.12.2020 20:05
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
91
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Здоровье — это локальная переменная, она существует только на время действия функции. Хотя вы, вероятно, вызываете функцию и можете передать другую переменную с именем health, эта переменная находится в другой области видимости и является просто другой переменной с тем же именем, поэтому, когда вы изменяете работоспособность в своей функции, вы изменяете только локальную версию, а не версии, с которой вы вызвали функцию. Вместо этого вы можете заставить функцию возвращать новое значение здоровья после атаки и перемещать операторы печати за пределы функции.

Ответ принят как подходящий

С глобальной переменной - убираем параметр функции "здоровье":

health = 100
def mon_attack(monDamage, defense):
    global health
    print("The monster attacked!")
    health = health - ((monDamage // defense) + 1)
    print("You have " + str(health) + " health left!")

Это было так просто. Большое спасибо!

Z0X 20.12.2020 20:21

Другие вопросы по теме