IndentationError 需要缩进块[重复]

问题描述 投票:0回答:5

这是代码:

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

我的代码有什么问题?

python indentation
5个回答
37
投票

您混合使用了制表符和空格。这可能会导致一些令人困惑的错误。

我建议使用only制表符或only空格进行缩进。

仅使用空格通常是更简单的选择。大多数编辑器都有一个选项可以自动将制表符转换为空格。如果您的编辑器有此选项,请将其打开。


顺便说一句,您的代码比需要的更冗长。而不是这个:

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

就这样做:

return str_p == str_q

您在这一行上似乎也有一个错误:

str_q = p[b+1:]

我会让你找出错误是什么。


13
投票

如果您有一个块中没有任何语句,也会发生此错误。

例如:

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


def say_hello():
    return "hello"

请注意,

for
块是空的。如果您想测试模块中的其余代码,可以使用 pass 语句。


3
投票

如果您使用的是 Mac 和 Sublime Text 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 的回答Sublime Text 3 文档Python 风格指南

这个答案主要适用于遇到同样问题并偶然发现此问题并在 Mac OS X 上使用 Sublime Text 3 的读者。


1
投票

我遇到了同样的错误,这就是我解决问题的方法。

缩进前:

缩进错误:需要缩进块。

缩进后:

工作正常。 TAB 空格后。


0
投票

您应该安装支持Python语法的编辑器(或IDE)。它可以突出显示源代码并进行基本的格式检查。 例如:Eric 4Spyder、Ninjia 或 EmacsVi

© www.soinside.com 2019 - 2024. All rights reserved.