#python #string #math #addition
#python #строка #математика #сложение
Вопрос:
Итак, я пытаюсь написать текстовую приключенческую игру, чтобы привыкнуть к Python. В основном, я работаю над здоровьем и атакой и т. Д. Мои значения работоспособности и атаки
health=50
squidAttack=5
squidHealth=20
attack=5
Итак, я тогда определил
def squidAttack():
global health
global squidHealth
global squidAttack
health=health-squidAttack
но когда я запускаю, я получаю сообщение об ошибке:
Traceback (most recent call last):
File "C:UsersAaronCDocumentsPythonKrados.py", line 280, in
<module> squidAttack() File
"C:UsersAaronCDocumentsPythonKrados.py", line 253, in squidAttack
health=health-squidAttack
TypeError: unsupported operand type(s) for -: 'int' and 'function'
Я хотел бы подчеркнуть; Я понятия не имею, что означает любая ошибка, и я много искал, но ничего не мог найти. Пожалуйста, помогите.
Комментарии:
1. «неправильное использование строк друг из друга»? Я не понимаю, о чем вы спрашиваете.
2. @JeffreyBosboom: я думаю, что он неправильно написал «minusing» (т. Е. вычитание) и может путать строки с переменными. Я собираюсь изменить заголовок.
3. Отбросьте
global
s и прочитайте приличный учебник.4. определение переменных в Python? Без обид, но, возможно, вы хотите сначала прочитать о Python и, возможно, также о динамически и статически типизированных языках
Ответ №1:
Вы используете одно и то же имя, squidAttack
, как для переменной, так и для функции. Переименуйте один из них, и он будет работать нормально.
Ответ №2:
squidAttack = 5
# squidAttack is an int
# ... Code goes here ...
def squidAttack():
# stuff goes here
# squidAttack is a function
Когда вы определяете squidAttack
функцию, она переопределяет то, что когда-то было int .
Гораздо лучший способ сделать это — использовать классы
class Actor(object):
def __init__(self, name, health, attack):
self.name = name
self.health = health
self.attack = attack
def attacks(other):
other.health -= self.attack
me = Actor("Me", 50, 5)
squid = Actor("Squid", 20, 5)
squid.attacks(me)
Ответ №3:
Вы используете имя squidAttack
как для переменной, содержащей значение 5
, так и для функции для вычитания из этой переменной health
. Поскольку функция идет последней, она переопределяет 5
значение squidAttack
, и поэтому, когда вы пытаетесь это сделать health=health-squidAttack
, Python будет использовать определение функции squidAttack
и пытаться вычесть функцию из целого числа. Очевидно, что это не работает. Вам нужно переименовать хотя бы один из squidAttack
s, чтобы у них были разные имена.