为什么我会收到“IndentationError:预期缩进的块”?[重复]

2025-03-20 08:46:00
admin
原创
84
摘要:问题描述:考虑:if len(trashed_files) == 0 : print "No files trashed from current dir ('%s')" % os.path.realpath(os.curdir) else : index=raw_inpu...

问题描述:

考虑:

if len(trashed_files) == 0 :
    print "No files trashed from current dir ('%s')" % os.path.realpath(os.curdir)
else :
    index=raw_input("What file to restore [0..%d]: " % (len(trashed_files)-1))
    if index == "*" :
        for tfile in trashed_files :
            try:
                tfile.restore()
            except IOError, e:
                import sys
                print >> sys.stderr, str(e)
                sys.exit(1)
    elif index == "" :
        print "Exiting"
    else :
        index = int(index)
        try:
            trashed_files[index].restore()
        except IOError, e:
            import sys
            print >> sys.stderr, str(e)
            sys.exit(1)

我得到:

        elif index == "" :
        ^
    IndentationError: expected an indented block

解决方案 1:

如错误消息所示,您遇到了缩进错误。这可能是由于制表符和空格混用造成的。

解决方案 2:

事实上,你需要了解有关 Python 缩进的多个事项:

Python 确实很关心缩进。

在许多其他语言中,缩进不是必需的,但可以提高可读性。在 Python 中,缩进取代了关键字begin / end{ },因此是必需的。

这在代码执行之前进行验证,因此即使从未遇到过出现缩进错误的代码,它也不会起作用。

有不同的缩进错误,阅读它们会很有帮助:

1. “IndentationError:预期缩进块”

出现此类错误的主要原因有两个:

- 您有一个“:”,后面没有缩进块。

以下有两个示例:

示例 1,无缩进块:

输入:

if 3 != 4:
    print("usual")
else:

输出:

  File "<stdin>", line 4

    ^
IndentationError: expected an indented block

输出表明你需要在第 4 行的else:语句后有一个缩进块

示例 2,未缩进的块:

输入:

if 3 != 4:
print("usual")

输出

  File "<stdin>", line 2
    print("usual")
        ^
IndentationError: expected an indented block

输出表明你需要在if 3 != 4:语句后有一个缩进的块行 2

- 您正在使用 Python2.x 并且混合了制表符和空格:

输入

def foo():
    if 1:
        print 1

请注意,if 之前有一个制表符,print 之前有 8 个空格。

输出:

  File "<stdin>", line 3
    print 1
      ^
IndentationError: expected an indented block

很难理解这里发生了什么,似乎有一个缩进块...但正如我所说,我使用了制表符和空格,你永远不应该这样做。

  • 您可以在这里获取一些信息。

  • 删除所有制表符并用四个空格替换它们。

  • 并配置您的编辑器以自动执行该操作。

2. “IndentationError:意外缩进”

缩进块很重要,但只有应该缩进的块才需要缩进。因此,基本上这个错误说明:

- 您有一个缩进的块,其前面没有“:”。

例子:

输入:

a = 3
  a += 3

输出:

  File "<stdin>", line 2
    a += 3
    ^
IndentationError: unexpected indent

输出表明他没有预料到缩进块第 2 行,那么您应该将其删除。

3. “TabError: 缩进中制表符和空格的使用不一致”(仅限 python3.x)

  • 您可以在这里获取一些信息。

  • 但基本上,您在代码中使用了制表符和空格。

  • 你不想要那个。

  • 删除所有制表符并用四个空格替换它们。

  • 并配置您的编辑器以自动执行该操作。


最后,回到你的问题:
只需查看错误的行号,然后使用前面的信息进行修复。

解决方案 3:

我遇到了同样的问题,并发现(通过对类似问题的回答)问题在于我没有正确缩进文档字符串。不幸的是,IDLE 在这里没有提供有用的反馈,但是一旦我修复了文档字符串缩进,问题就消失了。

具体来说——产生缩进错误的错误代码:

def my_function(args):
"Here is my docstring"
    ....

避免缩进错误的良好代码:

def my_function(args):
    "Here is my docstring"
    ....

注意:我不是说这问题,但这可能是问题,因为就我而言,确实是问题!

解决方案 4:

您可能需要检查空格和制表符。制表符默认为 4 个空格。但是,您的“if”和“elif”匹配,所以我不太清楚为什么。进入顶部栏中的选项,然后单击“配置 IDLE”。检查字体/制表符右侧的缩进宽度,并确保缩进有那么多空格。

解决方案 5:

这只是一个缩进问题,因为 Python 对此非常严格。

如果您使用的是Sublime Text,则可以选择全部,单击“Python”旁边的右下角,并确保选中“使用空格缩进”。选择您的制表符宽度保持一致,然后将缩进转换为空格以将所有制表符转换为空格。

解决方案 6:

在 Python 中,缩进块意味着所有内容都必须以某种方式编写。就我而言,我是这样写的:

 def btnClick(numbers):
 global operator
 operator = operator + str(numbers)
 text_input.set(operator)

注意:它会给我一个错误,直到我以这种方式编写它,例如“给出空格”,然后它会给我一个块,正如我试图在下面的代码中的函数中向您展示的那样:

def btnClick(numbers):
___________________________
|global operator
|operator = operator + str(numbers)
|text_input.set(operator)
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3975  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2742  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   80  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   88  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   77  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用