首页 > 解决方案 > 三元运算符语法错误

问题描述

我正在尝试练习使用三元运算符,我想使用它们将值设置为 False 或 True,但出现错误。你们知道我做错了什么吗?

play = False if ans.lower() is 'n' else play = True

标签: python-3.x

解决方案


您可以通过以下方式解决眼前的问题:

play = False if ans.lower() is 'n' else True

之后没有额外的分配else。三元的基本思想是:

finalValue = valueOne if someCondition else valueTwo

但是, (1)还有其他问题,所以我建议更简洁:

play = (ans.lower() != 'n')

(1)其中is检查身份平等,而不是价值平等的事实。参见,例如:

>>> x = 9999
>>> y = 9999
>>> x == y
True
>>> x is y
False

您会注意到这两个对象是不同的,即使它们具有相同的值。

其次,如果您使用布尔值来输入它,您实际上不需要三元,您可以使用布尔运算符来操作它。

任何三元形式:

True if condition else False
False if condition else True

可以更好地表达为(分别):

condition
not condition

推荐阅读