【问题标题】:SyntaxError: invalid syntax — if statement inside if statement in a singe lineSyntaxError: invalid syntax — if 语句内的 if 语句在一行中
【发布时间】:2021-09-06 09:02:05
【问题描述】:

我可以这样做:

if maxoksum > 0: R = maxoksum

但如果我尝试非常类似的事情:

if oksum % 3 == 0: if oksum > maxoksum: maxoksum = oksum

我得到语法错误:

    if oksum % 3 == 0: if oksum > maxoksum: maxoksum = oksum
                        ^
SyntaxError: invalid syntax

我做错了什么?如果在一行中,有什么办法可以开始工作吗?

【问题讨论】:

  • 为什么必须是单行?为什么不能把这两个条件和and结合起来?
  • 没有办法把它全部放在一条线上。单行 if 用于单个语句。但是你想要一个嵌套的if。这需要一个块。而且你不能在一行上放置一个块。如果你必须做一行(为什么?)然后使用and: if oksum % 3 == 0 and oksum > maxoksum: maxoksum = oksum
  • 你做错了什么是期望它工作。它不起作用,仅此而已。你不能在一行上做。
  • 可以说 if..: if..: .. 可以工作,但 if..: foo if..: barif..: if..: .. else: 在语法上已经不可能消除歧义,因此根本不可能编写任何这样的复合块语句.
  • @deceze,谢谢你的解释,现在我完全理解了。我不想使用if condition1 and condition2: ..,因为我不想在condition1 = false 时检查condition2。当条件 1 很简单并且条件 2 像 is_prime(非常大的数字)一样时,这变得非常合理。

标签: python if-statement syntax syntax-error


【解决方案1】:

回答我的问题,因为我无法将评论标记为解决方案。引用@deceze 的评论:

可以说if..: if..: .. 可以工作,但if..: foo if..: barif..: if..: .. else: 在语法上已经无法消除歧义,因此根本不可能编写任何这样的复合块语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-26
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多