当我尝试运行 Python 脚本时,为什么会出现“预期有缩进块”? [关闭]

2023-12-21

我有一个错误,显示“预期有一个缩进块” 您能否指导我如何处理此错误。谢谢你:)

代码示例:

for ch in f: ( translatedToken = english_hindi_dict[ch] ) if (ch in english_hindi_dict) else (translatedToken = ch) 

编辑答案以匹配代码示例。

for ch in f: ( translatedToken = english_hindi_dict[ch] ) if (ch in english_hindi_dict) else (translatedToken = ch)  

只是无效的 Python。

首先,可读性。您的代码很难阅读,因此也很难调试。 “ch”和“f”是什么?更重要的是,你可以在Python中做一个衬垫,但不推荐这样做,所以把for在单独的一行中。然后缩进。

for chunk in file: 
    ( translatedToken = english_hindi_dict[chunk] ) if (chunk in english_hindi_dict) else (translatedToken = chunk)

现在我们可以看到出了什么问题。您可以在条件语句中进行变量赋值。这在 Python 中是不允许的。我猜您有 C/C++ 背景并且习惯这样做。在 Python 中你不能这样做,以防止你编写混淆的代码。所以你最终会得到:

for chunk in file: 
    translatedToken = english_hindi_dict[chunk] if chunk in english_hindi_dict else chunk

如果您使用 Python 2.5+,这段代码应该可以工作。但三元运算符在较旧的 Python 版本中尚不可用。让我们让它更友好一点:

for chunk in file: 
    translatedToken = chunk
    if chunk in english_hindi_dict:
        translatedToken = english_hindi_dict[chunk]

你可能会说写起来更长,你是对的。但是您花在阅读代码上的时间比编写代码的时间多,因此让代码易于阅读是有意义的。当然,一旦你掌握了Python,你就会尝试让它以更Pythonic的方式工作。听说过 EAFTP 吗?

for chunk in file: 
    try:
        translatedToken = english_hindi_dict[chunk]
    except KeyError:
        translatedToken = chunk

但 Python 充满了惊喜,您会发现大多数经典用例都已得到解决。标准库通常提供优雅、简短但可读的解决方案:

for chunk in file: 
    translatedToken = english_hindi_dict.get(chunk, chunk)

作为结论:不要尝试像编写 C 那样编写 Python,也不要像编写 Perl 那样编写 Java。其他工具,其他风格。


要解决此问题,请启动编辑器的“搜索和替换”功能,并进行巨大的“全部替换”,将所有选项卡更改为 4 个空格,反之亦然。然后缩进所有块,最后对齐同一块中的所有指令。

有趣的是,之前没有出现在SO上。毕竟,这是事实,但并不那么明显。

在 Python 中,使用空格或制表符分隔块,而不是“{”。

因此,每当你进入一个块(函数、循环、类等)时,你都必须缩进你的代码。这不仅是好的做法,而且是强制性的。如果你不这样做,你的程序就会崩溃。

现在,大多数时候,您会收到此错误,因为您确实缩进了,但使用了制表符和空格。在 Python 程序中,您应该使用制表符或空格,但切勿在同一文件中同时使用两者。

E.G:

if (age > 18)
{
    printf("You can vote")
}

Becomes:

if age > 18:
    print("You can vote")

在大多数语言中,您可以执行以下操作:

if (age > 18)
{
printf("You can vote")
}

在 Python 中你不能:

if age > 18:
print("You can vote")

引发异常。更重要的是,你必须对齐同一块的所有指令,所以:

if age > 18:
    print("You can vote")
    print("How cool is that ?")

很好,但是:

if age > 18:
    print("You can vote")
   print("How cool is that ?")

引发异常。

最终,您不能在同一块中混合使用制表符和空格。所以:

if age > 18:
    print("You can vote")
    print("How cool is that ?")

看起来不错,但会引发异常。为了避免这个问题,只需坚持使用制表符或空格即可。这PEP8 http://www.python.org/dev/peps/pep-0008/,最常用作编码风格参考的文本,建议使用 4 个空格。

大多数编辑器都有全局“搜索和替换”功能,可以让您解决可能遇到的任何问题。有些像 Geany 或Ulipad https://stackoverflow.com/questions/1792360/what-are-the-limits-of-python/1793767#1793767甚至有“用空格替换所有制表符”功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我尝试运行 Python 脚本时,为什么会出现“预期有缩进块”? [关闭] 的相关文章

  • min() arg 是一个空序列

    我试图找到矩阵行中的最小元素 但有两个条件 1 它必须 gt 0 2 并且这个点一定不能被访问 is visited k is False 我下一步正在尝试做 min x for x in matr sum i if x gt 0 if i
  • 在 Python 中,部分函数应用(柯里化)与显式函数定义

    在 Python 中 以下方式是否被认为是更好的风格 根据更一般的 可能是内部使用的功能显式定义有用的功能 或者 使用偏函数应用来显式描述函数柯里化 我将通过一个人为的例子来解释我的问题 假设编写一个函数 sort by scoring 它
  • Python OverflowError:数学范围错误[重复]

    这个问题在这里已经有答案了 当我尝试这个计算时 出现溢出错误 output math exp 1391 12694245 100 我知道发生这种情况是因为使用的数字 超出了双精度数的范围 但有什么方法可以解决这个问题并获得输出值 有人可以帮
  • 以 str.format 切片字符串

    我想实现以下目标str format x y 1234 5678 print str x 2 str y 2 我能够做到这一点的唯一方法是 print 0 1 format str x 2 str y 2 现在 这是一个例子 我真正拥有的是
  • 生成 Flask 中使用的签名会话 cookie 值

    我正在用另一个需要将项目注入会话的 Flask 服务器代理 Flask 服务器 两台服务器具有相同的密钥 因此加密签名将相同 当使用 Flask 和会话时 http 响应包含一个 Set Cookie 标头session text 其中 t
  • 在 Django 中使用 prefetch_lated 连接 ManyToMany 字段

    我可能遗漏了一些明显的东西 但我在连接 ManyToMany 字段以在 Django 应用程序中工作时遇到问题 我有两个模型 class Area models Model name CharField class Role models
  • Json.dump 失败并显示“必须是 unicode,而不是 str”TypeError

    我有一个 json 文件 其中恰好有大量中文和日文 以及其他语言 字符 我将其加载到我的 python 2 7 脚本中使用io open如下 with io open multiIdName json encoding utf 8 as j
  • 将文件标记为从 Python 中删除?

    在我的一个脚本中 我需要删除当时可能正在使用的文件 我知道我无法删除正在使用的文件 直到它不再使用为止 但我也知道我可以将该文件标记为由操作系统 Windows XP 删除 我将如何在 Python 中做到这一点 以及另一个不依赖于 pyw
  • 使用pip安装pylibmc时出错

    您好 当我尝试使用 pip 在 OSX Lion 上安装 pylibmc 时 出现以下错误 pylibmcmodule h 42 10 fatal error libmemcached memcached h file not found
  • 使用 Python 将阿拉伯语或任何从右到左书写系统的字符串打印到 Linux 终端

    非常简单的例子是 city print city 我期望输出是 但实际上输出是相反的字符串 字母看起来有点不同 因为它们有开始 中间和结束形式 我无法将其粘贴到此处 因为复制粘贴会再次更正字符串的顺序 如何在 Linux 终端上正确打印阿拉
  • 使用 NumPy 的 Mittag-Leffler 函数的不稳定性

    在尝试重现时Wolfram MathWorld 上的情节 http mathworld wolfram com Mittag LefflerFunction html 并试图帮助这个问题 https stackoverflow com qu
  • Django“模型”对象不可迭代

    我有一张表 其中显示了已注册的员工 我想根据他们的数据库生成一个简单的 HTML 页面 其中包括他们的姓名 id 职称等 为此 我将一个 id 传递给视图 以便它可以获取相应用户的详细信息并向我显示 一切正常 直到出现错误对象不可迭代 下面
  • 使用 argparse 指定默认文件名,但不使用 --help 打开它们?

    假设我有一个对文件执行一些操作的脚本 它在命令行上获取此文件的名称 但如果未提供 则默认为已知文件名 content txt 说 与蟒蛇的argparse 我使用以下内容 parser argparse ArgumentParser des
  • 如何从 Python 3.5 降级到 3.4

    我想安装 kivy 链接在这里 https kivy org docs installation installation windows html install win dist 用于项目 但是 当尝试使用 pip 安装它所依赖的包时
  • 如何使直方图列的宽度都相同

    我在操作直方图时遇到了一些麻烦 我有一个包含两列的 df 我将它们绘制为堆叠直方图 我将它们放入特定的垃圾箱中 请参阅下面的代码 但我想在最后制作一个大垃圾箱 4000 10000 但是 默认情况下 大垃圾箱的列宽很大 有没有办法让这个大垃
  • python:UnboundLocalError:赋值前引用的局部变量“open”[重复]

    这个问题在这里已经有答案了 def read lines readFileName readfile txt f open readFileName r contents f read and so on read lines 当我运行这个
  • Python itertools groupby 中令人不安的奇怪行为/错误?

    我在用itertools groupby解析一个短的制表符分隔的文本文件 文本文件有几列 我想做的就是对具有特定值的所有条目进行分组x在特定的列中 下面的代码对名为的列执行此操作name2 寻找变量中的值x 我尝试使用以下方法来做到这一点c
  • 对 Python 列表元素进行分组

    我有一个 python 列表 如下所示 my list 25 1 0 65 25 3 0 63 25 2 0 62 50 3 0 65 50 2 0 63 50 1 0 62 我想根据以下规则对它们进行排序 1 gt 0 65 0 62 l
  • 重新安装后使用 pandas dataframes 时出现问题

    我已经重新安装了 Python 和 Anaconda 现在面临以下问题 在我将 pkl 文件加载到数据帧并尝试 查看 该文件后 如下所示 df pd read pickle example pkl df 我收到错误 AttributeErr
  • 真实值与预测值的降维可视化

    我有一个数据框 如下所示 label predicted F1 F2 F3 F40 major minor 2 1 4 major major 1 0 10 minor patch 4 3 23 major patch 2 1 11 min

随机推荐

  • 为什么使用参数化查询或实体框架可以防止 SQL 注入?

    我已经很好地掌握了 SQL 注入 当 SQL 查询应该是这样的时候 SELECT FirstName LastName FROM Customers WHERE CustomerId valueFromApplication 变成这样的查询
  • Spring Bean 的公共访问修饰符和模块导出

    Spring bean 类 Spring 应用程序上下文设置的对象的类 必须是public课程 让 Spring 创建这些对象 显然 如果yourbeans 访问不同包中的其他 beans 你的 beans 必须是public彼此互动 我的
  • O_NONBLOCK 是否被设置为文件描述符或底层文件的属性?

    根据我在 The Open Group 网站上读到的内容fcntl http www opengroup org onlinepubs 009695399 functions fcntl html open http www opengro
  • Phonegap iPad 应用程序启动画面/启动屏幕在 deviceReady 上切换

    我有一个使用 HTML JS CSS Phonegap 创建的 iPad 应用程序 仅限横向 一切都按预期进行 但是我遇到了启动画面 启动屏幕的问题 当应用程序加载时 会显示正确的启动画面 正确的大小和命名等 但是一旦应用程序达到 devi
  • Google Billing API:订阅购买后不久,会触发订阅过期,然后立即续订订阅

    我正在使用 Firebase Cloud Functions 来处理应用内购买的后端流程 如果我购买订阅 在 Flutter Android 客户端上 购买流程将毫无问题 但是 当第一次续订发生时 我首先收到订阅已过期的实时开发人员通知 大
  • 本地化比较属性

    这个问题的底部是一个包含三个属性的模型 OldPassword NewPassword 和ConfirmPassword 这些显示在更改密码表单中 我已本地化了所有错误消息 但以下一条除外 当 Compare 属性失败时 我无法完全本地化错
  • 我有一个 Vertx 请求,我需要计算一个外部可见(公共)URL

    我将 Vertx 3 与 Kotlin 结合使用 有时我需要从公共 URL 的角度返回一个特定的 URI 该 URI 与 Vertx web 请求认为我的 URL 不同 这可能是由于我的负载均衡器或代理接收一个 URL 然后通过内部 URL
  • Javascript-变量提升

    这是一个简单的片段 我只是不明白 下面的代码输出 12 我明白 因为var foo 12 替换先前的变量声明 在下面的代码中 它会发出警报1 这意味着在函数外部声明的变量可以在函数内部访问 但是 在下面的代码中 为什么它会警告未定义 我以为
  • CSS:最大宽度不会缩小? [复制]

    这个问题在这里已经有答案了 可能的重复 使 CSS Div 宽度等于内容宽度 https stackoverflow com questions 450903 make css div width equal to contents 我正在
  • 亚马逊MWS feed API问题,取消订单

    请帮我解决这个问题 我很久以前就尝试通过 MWS Feed API 取消亚马逊订单 但它根本没有取消 Feed 提交一切正常 但订单并未取消 下面是我的 Feed XML 我们正在使用我尝试过的报告类型 POST ORDER ACKNOWL
  • Python 是否评估前向引用的类型提示?

    我正在查看 PEP 484 部分转发参考文献 https www python org dev peps pep 0484 forward references并注意到以下声明 该定义可以表示为字符串文字 稍后解决 这让我想知道 稍后 是什
  • 从最小化状态恢复表单时,WS_EX_COMPOSITED 会导致无休止的重画

    The Form从最小化状态恢复时需要无尽的时间来重新绘制 The Form是无国界的 我凌驾于一切之上WndProc and 创建参数 我正在恢复无边界Form从最小化状态到正常状态 我凌驾于一切之上创建参数降低阴影并停止闪烁的方法 pr
  • 按三个不同列中的最大值排序

    我什至不确定是否可以执行此操作 但我想根据三列之一的最大值来排序查询 表结构示例 引导 列 1 列 2 列 3 第 1 3 列有数值 我想根据 1 2 OR 3 的最大值对 select 语句进行排序 例如 record column1 c
  • Akka testkit:时间因素是多少?

    Akka TestProbe 上有多种方法表示它们 正确处理 timeFactor 这意味着什么 http doc akka io api akka 2 0 akka testkit TestProbe html http doc akka
  • NFA 与 DFA 的时间复杂度权衡

    我正在寻找关于 nfa 或 dfa 哪个更好使用以及在编译器中什么情况下使用的讨论 模拟 nfa 与 dfa 的时间复杂度权衡是什么 在编译器的什么情况下 哪一个更合适 从 NFA 构造 DFA 的时间为 O 2 m 其中 m 是节点数 D
  • AWS S3 预签名 URL 包含 X-Amz-Security-Token

    我正在尝试使用 go sdk 为 S3 存储桶中的文件创建预签名 URL 当我从命令行运行程序时 我得到了不包含 X Amz Security Token 的预签名 URL 但如果我使用 lambda 函数中的相同代码 我总是会在 URL
  • 在 Python 类中支持等价性(“平等”)的优雅方法

    在编写自定义类时 通过以下方式允许等效性通常很重要 and 运营商 在 Python 中 这是通过实现 eq and ne 分别采用特殊方法 我发现执行此操作的最简单方法是以下方法 class Foo def init self item
  • 使用 Gtk 3 在 Python 中加载并显示来自网络的图像?

    我正在 Ubuntu 12 04 上使用 Python 和 GTK 3 编写一个应用程序 我遇到的问题是我不知道应该如何使用来自网络的图像文件在我的应用程序中显示 Gtk Image 据我所知 from gi repository impo
  • Axlsx - 设置单元格内文本的格式

    我似乎找不到任何有关是否可以使用多个格式选项填充单个单元格的信息 例如 我希望单元格 A1 填充以下文本 Hello世界 这是excel 这可能吗 如果可以 我应该使用什么语法来执行此操作 对于内联样式 请使用富文本 以下是 axlsx 页
  • 当我尝试运行 Python 脚本时,为什么会出现“预期有缩进块”? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 编辑问题以包括期望的行为 特定问题或错误以及重现问题所需的最短代码 help minimal reproducible example 这