【问题标题】:"unresolved reference" in ternary if else one liner三元中的“未解决的参考”,如果是一个班轮
【发布时间】:2022-07-22 23:14:03
【问题描述】:

我正在尝试找出以下行不起作用的原因:

i = 0 if i // 3 == 0 else i += 1

尽管 i 是在此行之前定义的,但我收到“未解析的引用 'i'”错误。抱歉,如果这很明显,但我对三元组还很陌生,并且无法找到为什么这不起作用的充分理由(尽管我怀疑这可能与增强分配有关)。

提前致谢。

【问题讨论】:

  • 问题是i += 1是一个语句,而不是一个表达式。一条工作线是:i = 0 if i // 3 == 0 else i+1
  • 即此语法的工作方式类似于:(variable) = (expression1) if (condition) else (expression2)。不像(statement1) if (condition) else (statement2)
  • @slothrop 感谢您提供的信息。您的代码有效,但 i 不再递增。您是否知道让生产线按原计划工作的方法?
  • 如果 i 从 0 开始,那么它确实永远不会增加,因为 i//3 == 0

标签: python python-3.9


【解决方案1】:

您应该将其更改为i = 0 if i // 3 == 0 else i + 1。原因是它解析为i = (0 if i // 3 == 0 else i + 1),而不是您似乎假设的(i = 0) if (i // 3 == 0) else (i + 1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 2021-11-02
    • 1970-01-01
    • 2021-08-17
    • 2016-12-14
    • 2020-05-27
    • 2019-11-16
    • 2021-01-24
    相关资源
    最近更新 更多