随机缩进错误?

3
这是我的代码:
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()

每次运行时都会出现以下错误:
  File "main.py", line 41
    elif selection == 2:
       ^
IndentationError: expected an indented block

我可能是个初学者,在这里请求帮助!谢谢


您的 if 语句下没有任何代码。(注释不计算在内。) - kindall
4
你可以使用 pass 作为占位符,而不是注释。 - Phix
给OP:阅读标题为“什么是“IndentationError: expected an indented block”?”的重复部分。 - Christian Dean
4个回答

3

if代码块后必须有一个语句。

注意:注释不算语句。 您可以使用pass语句代替。

例如:

if statement:
    pass

请在您的答案中包含一个固定代码的示例,以便每个人都能理解它。 - zvone
我已经用代码进行了编辑。 - Abiral Khanal
很好。但是你不需要括号。一个简单的 if语句: 更加优美。 - zvone

2
尽管对您和其他人来说,负债累累的# Connect看起来是一个完美的if主体,但对Python来说,它就好像您什么都没有写。而空的if主体是不合法的。
有两种常见的处理方法,当您需要插入占位符以后编写代码或临时禁用某些代码进行调试时,您将希望养成做其中之一的习惯。
第一种方法是编写如下内容:
pass # TODO: Connect

第二个是写这个:
"Connect"

后面的内容翻译如下:

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

虽然您可以只写 pass#Connect,但问题在于,pass和注释是您在最终代码中可以合理使用的东西,因此您无法确定这是一个占位符,您在部署任何内容之前要回到这个地方。

相比之下,您的linter / IDE / commit-hooks / CI /任何其他工具可以轻松配置为识别TODO注释或没有效果的表达式语句,并因此警告您再次检查这段代码是否真的准备好部署。


1

评论不是if语句的占位符,因此请使用pass。

...
if selection == 1:
    #Connect
    pass
...

0

当你有 #connect 时,在其下方放置一些功能性代码,而不是将其替换掉或与其同时使用。它的含义是 elif 在 if 的“ 下面 ”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接