19

这是代码:

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

我的代码有什么问题?

4

5 回答 5

37

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

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

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


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

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

只需这样做:

return str_p == str_q

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

str_q = p[b+1:]

我会让你弄清楚错误是什么。

于 2012-04-20T00:40:22.000 回答
13

如果您有一个没有语句的块,也会发生此错误

例如:

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


def say_hello():
    return "hello"

请注意,该for块是空的。如果要测试模块中的剩余代码,可以使用pass语句。

于 2015-04-29T19:13:25.377 回答
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 docspython style guide

该答案主要适用于遇到相同问题并偶然发现此问题并在 Mac OS X 上使用 sublime text 3 的读者。

于 2015-02-22T05:29:46.710 回答
3

我得到了同样的错误,这就是我为解决问题所做的。

缩进前:

在此处输入图像描述

缩进错误:需要一个缩进块。

缩进后:

在此处输入图像描述

工作正常。在 TAB 空格之后。

于 2016-06-25T19:08:48.173 回答
0

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

于 2012-04-20T00:50:16.650 回答