0
class Animal(object):

        """Makes cute animals."""
        is_alive = True
        def __init__(self, name, age):
        self.name = name
        self.age = age
    # Add your method here!
    def description(self):
        print self.name
        print self.age

hippo = Animal("Steve",100) 
hippo.description() 

-- コード ピース 1

私が得たエラー:

Traceback (most recent call last):
  File "runner.py", line 125, in compilecode
  File "python", line 3
    is_alive = True
   ^
IndentationError: unexpected indent

何が起こっているのかわからない

誰か私が間違っている場所を教えてもらえますか? どうもありがとう!

4

3 に答える 3

4

タブとスペースが混在しているようです。つまり、あなたがインデントとして見るものと、通訳者が見るものは完全に異なるということです。これは、気づきにくいことにつながりIndentationErrorます。

特に:

        """Makes cute animals."""
        is_alive = True
        def __init__(self, name, age):
        self.name = name

最初の 2 行には 8 つのスペースがあります。3 番目には 7 つのスペースとタブがあります。Python がそれを 8 個のスペースよりも多くインデントされていると見なすのか (ここではインデントする理由がないため、これはエラーです)、それともどちらが他のスペースより多くインデントされているかを推測することを単に拒否するのかどうかはわかりません。しかし、いずれにせよ、それは間違っています。そして、次の行には 2 つのタブがあります。

このコードを修正するには、すべてのタブを削除し、スペースで再度インデントします。

将来これを回避する簡単な方法は、コードでタブを使用しないことです。

また、Tab キーを押しても常にスペースを挿入する、より優れたエディターの使用を検討することもできます。または、それが失敗した場合でも、少なくともタブを表示できるエディターがあれば、問題が発生したときにそれを見つけることができます。

最後に、コードが完全に問題ないように見えるときに s を取得するたびに、 (の代わりに)フラグIndentationErrorを使用してコードを実行し、これが理由かどうかを確認してください。-tpython -t myscript.pypython myscript.py

Karl Knechtel がコメントで指摘しているように、PEP 8 (Python スタイル ガイド) にはこれに関するセクションがあります。

于 2013-05-14T00:55:54.833 に答える
0

インデント方法にタブとスペースを混同していないことを確認してください。すべてのタブを使用するか、すべてのスペースを使用するかを選択します。

于 2013-05-14T00:55:32.283 に答える
0

このように、self.name と self.age の行をインデントする必要があります。

class Animal(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

定義するメソッドの下のテキストをインデントする必要があります。

于 2013-05-14T00:51:59.813 に答える