关于python:随机缩进错误?

Random indentation errors?

本问题已经有最佳答案,请猛点这里访问。

这是我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def options():
    selection=int(input("#>"))
    if selection == 1:
        #Connect

    elif selection == 2:
        #Modules
        print("Modules")

    elif selection == 3:
        #Checking Internet
        checkInternetConnection()

    elif selection == 99:
        #Exit
        shutdown()
    else:
      print"Unknown Option Selected!"
      sleep(100)
      sys.clear()
      start()

每次我跑我得到这个错误:

1
2
3
4
  File"main.py", line 41
    elif selection == 2:
       ^
IndentationError: expected an indented block

我可能在这里是一个菜鸟,但请有人帮忙吗?! 谢谢


你的if块之后必须有一个声明

注意:评论不计算在内。
您可以改用pass语句。

例如。

1
2
if statement:
    pass


虽然负债# Connect看起来像是一个非常好的if身体,对于你和其他人类读者,对于Python来说,就像你根本就没有任何东西一样。一个空的if身体是非法的。

有两种常见的方法可以解决这个问题,你需要养成做一个或另一个的习惯,无论何时你需要坚持占位符以便稍后编写代码,或者暂时禁用一些代码进行调试。

首先是写这个:

1
pass # TODO: Connect

第二个是写这个:

1
"Connect"

后者可能看起来有点奇怪(即使你习惯于文档字符串),但它是一个完全有效的表达式,因此是一个完全有效的陈述。

虽然你可以写pass # Connect,但问题是pass并且注释是你在最终代码中可以合理拥有的东西,所以你无法判断这是否是你想要回到的占位符在部署任何东西之前。

相比之下,您的linter / IDE / commit-hooks / CI /可以轻松配置为识别TODO注释或无效的表达式语句,因此警告您要仔细检查此代码是否已准备就绪部署。


注释不是if语句的占位符,因此使用pass。

1
2
3
4
5
...
if selection == 1:
    #Connect
    pass
...

如果您有#connect,请在其下面添加一些功能代码,如果相反或使用它。它的读数是elif'在'if'之下。