python - Python添加布尔和整数抽象
问题描述
基本上,我不确定为什么:
red, green = 44, 43
purple = red + green
print(red + green != purple + purple / purple - red % green)
// Returns False
// Essentially => red + green != purple + 0.0
print(red + True + 0.0) // Returns 45.0
我不确定是什么导致了这种差异?由于 green != Purple 也给出了 True 的结果,那么为什么抽象会导致值的差异?
解决方案
您弄错了运算符优先级规则。本质上,表达式的评估如下:
red + green != purple + purple / purple - red % green
= 44 + 43 != 87 + 87 / 87 - 44 % 43 # substitution
= 87 != 87 + 1 - 1 # perform / and % first
= 87 != 87 # sum
= False # not equal
至于第二个,red + True + 0.0
,True
被提升为1
,并且总和返回45
,然后添加0.0
将 int 提升为浮点数。
推荐阅读
- swift - 通过重复单个字符构建字符串
- r - R - NLS 错误“评估模型时产生的缺失值或无穷大”
- oracle - 是否可以在 Spring Data JPA Repository 的 @Query 注释中使用 Oracle Anonymous Block?
- python - FastAPI & GINO 无法从数据库中的表中获取所有行
- python - 使用last对数据帧进行上采样后如何摆脱NaN?
- ansible - Ansible:如何在 CSV 文件中查找并填充相关文件内容
- qtimer - Qtimer:每 2000 毫秒调用一次不同的插槽
- javascript - 如何在功能组件之间获取道具?
- node.js - 为什么我的护照快递不再起作用了?
- mongodb - 将序列号添加到来自 mongodb 查询的项目