所以,我试图编写一个基于文本的冒险游戏来熟悉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:\Users\AaronC\Documents\Python\Krados.py", line 280, in
<module> squidAttack() File
"C:\Users\AaronC\Documents\Python\Krados.py", line 253, in squidAttack
health=health-squidAttack
TypeError: unsupported operand type(s) for -: 'int' and 'function'
我想强调一下;我不知道任何错误意味着什么,我已经搜索了很多,但找不到任何东西。请帮忙。
答案 0 :(得分:2)
您对变量和函数使用相同的名称squidAttack
。重命名其中一个,它会正常工作。
答案 1 :(得分:0)
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)
答案 2 :(得分:0)
对于包含值squidAttack
的变量和从5
减去该变量的函数,您使用名称health
。因为函数是最后一个,所以它会覆盖5
的{{1}}含义,所以当你尝试squidAttack
时,Python将使用health=health-squidAttack
的函数定义并尝试从整数中减去一个函数。显然,这不起作用。您需要重命名squidAttack
中的至少一个,以便它们具有不同的名称。