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

2025-03-20 08:46:00
admin
原创
42
摘要:问题描述:考虑: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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

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

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

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用