web-dev-qa-db-ja.com

IndentationErrorにはインデントされたブロックが必要です

コードは次のとおりです。

def myfirst_yoursecond(p,q):

a = p.find(" ")
b = q.find(" ")
str_p = p[0:a]
str_q = p[b+1:]

if str_p == str_q:
    result = True
else:
    result = False
return result

エラーは次のとおりです。

Traceback (most recent call last):
File "vm_main.py", line 26, in <module>
import main
File "/tmp/vmuser_ssgopfskde/main.py", line 22
result = False
^
IndentationError: expected an indented block

私のコードの何が問題になっていますか?

16
Sam

タブとスペースが混在しています。これにより、いくつかの紛らわしいエラーが発生する可能性があります。

インデントにはonlyタブまたはonlyスペースを使用することをお勧めします。

通常、スペースのみを使用する方が簡単です。ほとんどのエディターには、タブをスペースに自動的に変換するオプションがあります。エディターにこのオプションがある場合は、オンにします。


余談ですが、コードは必要以上に冗長です。これの代わりに:

if str_p == str_q:
    result = True
else:
    result = False
return result

これを行うだけです:

return str_p == str_q

また、この行にバグがあるようです。

str_q = p[b+1:]

エラーが何であるかを理解するためにあなたを任せます。

34
Mark Byers

このエラーは、ステートメントが含まれていないブロックがある場合にも発生します

例えば:

def my_function():
    for i in range(1,10):


def say_hello():
    return "hello"

forブロックが空であることに注意してください。モジュール内の残りのコードをテストする場合は、 pass ステートメントを使用できます。

11
Pramod

Macと崇高なテキスト3を使用している場合、これがあなたのすることです。

/Packages/User/に移動し、Python.sublime-settingsというファイルを作成します。

通常、mac os xを使用している場合、/Packages/User~/Library/Application Support/Sublime Text 3/Packages/User/Python.sublime-settings内にあります。

次に、これをPython.sublime-settingsに入れます。

{
    "tab_size": 4,
    "translate_tabs_to_spaces": false
}

クレジットは、Mark Byerの answersublime text 3 docs および python style guide にあります。

この答えは、主に同じ問題があり、これにつまずき、Mac OS Xで崇高なテキスト3を使用している読者向けです。

3
Kim Stacks

私は同じエラーを受け取りました、これは私が問題を解決するためにしたことです。

インデント前:

enter image description here

インデントエラー:インデントされたブロックが必要です。

インデント後:

enter image description here

正常に動作しています。 TABスペースの後。

3
MAX

Python構文をサポートするエディター(またはIDE)をインストールする必要があります。ソースコードを強調表示し、基本的な形式チェックを行うことができます。例:Eric4、Spyder、Ninjia、Emacs、Vi.

0
wuliang