【问题标题】:Random indentation errors? [duplicate]随机缩进错误? [复制]
【发布时间】:2019-01-30 10:20:41
【问题描述】:

这是我的代码:

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 语句下没有任何代码。 (评论不算数。)
  • 您可以使用pass 作为占位符而不是评论。
  • 致 OP:阅读标题为 ““IndentationError:预期缩进块”是什么意思?”

标签: python syntax


【解决方案1】:

在你的 if 块之后必须有一个语句

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

例如。

if statement:
    pass

【讨论】:

  • 请在你的答案中附上固定代码的例子,以便大家理解。
  • 我现在用代码进行了编辑。
  • 优秀。但是你不需要括号。一个普通的if statement: 更好。
【解决方案2】:

虽然负债 # Connect 看起来像一个完美的 if 身体,对你和其他人类读者来说,对 Python 来说,就好像你什么都没有。空的if 正文是非法的。

有两种常见的方法来处理这个问题,当您需要插入占位符以便稍后编写代码或暂时禁用某些代码时,您需要养成不假思索地做其中一种的习惯调试代码。

首先是这样写的:

pass # TODO: Connect

第二个是这样写的:

"Connect"

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

虽然您可以只写pass # Connect,但问题在于pass 和注释是您可以在最终代码中合理包含的内容,因此您无法判断是否这是您打算在部署任何内容之前返回的占位符。

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

【讨论】:

    【解决方案3】:

    如果您有#connect,则在其下放置一些功能代码,如果代替或与它一起使用。它的解读是 elif 在 if 之下。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-20
        • 1970-01-01
        • 1970-01-01
        • 2014-05-01
        相关资源
        最近更新 更多