d00*_*man 5 python ternary-operator
我正在尝试编写一个简单的三元运算符,在 ruby 中如下所示:
0 > 1 ? alice+=1 : bob+=1
我用Python写成这样:
alice += 1 if 0 > 1 else bob += 1
此三元运算符在 处抛出无效语法bob+=1。为什么会发生这种情况?如何使第二个运算符与第一个运算符执行相同的行?
三元语法是一个表达式;您尝试将其用作单行if-then-else。您可以选择来自方程右侧的增量值,例如:
alice += 1 if bob > 1 else 0
Run Code Online (Sandbox Code Playgroud)
...但是你不能像这样改变任务的目标。如果您确实需要这样做,您可以将自定义元组分配给 LHS alice, bob,但这似乎有点过分了。只需使用自然if语句
if 0 > 1:
alice += 1
else:
bob += 1
Run Code Online (Sandbox Code Playgroud)
最终的执行代码将是相同的,并且源代码更具可读性。