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

时间:2017-07-05 23:29:58

标签: python ternary-operator

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

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

我用python编写它:

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

此三元运算符在bob+=1处抛出无效语法。为什么会发生这种情况,如何让第二个操作符与第一个操作符一样执行?

1 个答案:

答案 0 :(得分:3)

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

alice += 1 if bob > 1 else 0

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

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

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