我需要帮助从彼此中减去变量,两者都是数字

时间:2014-06-21 20:19:15

标签: python string math addition

所以,我试图编写一个基于文本的冒险游戏来熟悉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'

我想强调一下;我不知道任何错误意味着什么,我已经搜索了很多,但找不到任何东西。请帮忙。

3 个答案:

答案 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中的至少一个,以便它们具有不同的名称。