无法分配给条件表达式

时间:2019-08-05 10:31:49

标签: python

if i+1 < stages[i]: tried[i] = (tried[i] + 1) if tried[i] != None else tried[i] = 0
  

如果i + 1 <阶段[i]:尝试[i] =(尝试[i] +1),如果尝试[i]!=无   否则尝试过[i] = 0                                     ^ SyntaxError:无法分配给条件表达式

我遇到了cannot assign to conditional expression错误。不确定我做错了哪一部分。

2 个答案:

答案 0 :(得分:3)

应该是:

if i+1 < stages[i]: tried[i] = (tried[i] + 1) if tried[i] != None else 0

没有最后一个triend[i] = 0,只有0(无论如何,triend可能还是错误的。)

答案 1 :(得分:0)

您正在寻找的整体结构,因为您正在尝试使用多个条件表达式完成赋值,是这样的: variable = expression condition else expression condition ... else expression 。您甚至可以使用括号来提醒自己它将如何解析:variable = (expression condition else expression 条件 ... else 表达式)。整个条件表达式必须以“else”结尾。

例如,我有以下代码:

x = 5
if x == 1:
    a = '1'
elif x == 2:
    a = '2'
else:
    a = '3'
print(a)

使用条件表达式,它变成:

x = 5
a = '1' if x == 1 else '2' if x == 2 else '3'
print(a)

我不确定你的赋值和条件表达式是什么

if i+1 < stages[i]: tried[i] = (tried[i] + 1) if tried[i] != None else tried[i] = 0

展开时看起来像,因为缺少一些信息:

missing_expression = '?'
if i+1 < stages[i]:
    tried[i] = (tried[i] + 1)
elif tried[i] != None:
    tried[i] = missing_expression
else:
    tried[i] = 0

当提供缺少的表达式时,您的条件表达式应如下所示:

tried[i] = (tried[i] + 1) if i+1 < stages[i] else missing_expression if tried[i] != None else 0