为什么这个三元运算符语法无效?

Why is this ternary operator syntax invalid?

我正在尝试编写一个简单的三元运算符,在 ruby 中看起来像这样:

0 > 1 ? alice+=1 : bob+=1

我用python写成这样:

alice += 1 if 0 > 1 else bob += 1

此三元运算符在 bob+=1 处抛出无效语法。为什么会发生这种情况,我怎样才能使第二个运算符按照与第一个运算符相同的方式执行?

三元语法是一个表达式;您已尝试将其用作单行 if-then-else。您可以选择增量值,它来自等式的 RHS,例如:

alice += 1 if bob > 1 else 0

...但是您不能像这样更改作业的目标。如果您真的需要这样做,您可以将自定义元组分配给 LHS alice, bob,但这似乎有点过分了。只需使用自然的 if 语句

if 0 > 1:
    alice += 1
else:
    bob += 1

最终的执行代码将是相同的,并且源代码保持更具可读性。