无效的python冒号错误语法

时间:2014-08-09 04:15:57

标签: python

class Personaje:
    def__init__(self,name):
        self.name=pepe
        self.type=warrior
        self.health=100
        def eat(self,food):
            if(food=="manzana"):
                self.health-=10
            elif(food=="leche"):
                self.health+=5
            else(food=="mondongo"):
                self.health+= int(0.0001) 

我在(self.name)上获得了无效的语法:<<

1 个答案:

答案 0 :(得分:5)

问题1

看一下错误:

  File "<ipython-input-4-3873e72b95ad>", line 3
    def__init__(self,name):
                          ^
SyntaxError: invalid syntax

def__init__之间应该有一个空格,因此__init__函数的定义应为:

def __init__(self, name):
    # ....

问题2

else语句不会使用ifelif之类的任何表达式,因此导致此语法错误:

  File "<ipython-input-5-661f08a520ce>", line 12
    else(food=="mondongo"):
        ^
SyntaxError: invalid syntax

else表示其他所有内容,因此如果您希望它仅适用于&#34; mondongo&#34;你应该在那里使用另一个elif

问题3

函数eat__init__函数内定义,导致:

<ipython-input-22-9789ced9c556> in <module>()
----> 1 p.eat('leche')

AttributeError: Personaje instance has no attribute 'eat'

如果你取消函数(向左移动4个空格),那么将在类中定义eat而不是init函数。所以基本结构应该像这样缩进:

class Personaje:
    def __init__(...):
        pass
    def eat(...):
        pass

问题4

未将Personaje名称设置为__init__函数中指定的名称。如果您想将默认名称设置为pepe并输入warrior,我建议您将init函数更改为如下所示:

def __init__(self, name="pepe", type="warrior"):
    self.name = name
    self.type = type
    self.health = 100

你现在的最后Personaje课应该是这样的:

class Personaje:

    def __init__(self, name="pepe",type="warrior"):
        self.name = name
        self.type = type
        self.health = 100

    def eat(self, food):
        if(food=="manzana"):
            self.health -= 10
        elif(food=="leche"):
            self.health += 5
        else:
            self.health += int(0.0001)