python-3.x - 三元运算符语法错误
问题描述
我正在尝试练习使用三元运算符,我想使用它们将值设置为 False 或 True,但出现错误。你们知道我做错了什么吗?
play = False if ans.lower() is 'n' else play = True
解决方案
您可以通过以下方式解决眼前的问题:
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
推荐阅读
- c# - ServiceProvider 不解析依赖,返回 null
- javascript - 每 2 项新行
- latex - 如何在 tikz-latex 的顶点中添加下标?
- d3.js - D3 - 有条件地将制造商添加到生产线
- angular - 在 Angular 中绑定数据后,Select 根本不显示
- css - 在 Outlook 中的同一 TD 中垂直对齐图像和文本
- regex - 匹配两个字符之间的字符串
- ios - 如何在 Xcode 模拟器上点击特定点
- ruby-on-rails - 使用 SecureRandom.hex 时出现重复的可能性有多大?
- java - 嵌套的while循环赋值在Java中给出了意想不到的结果