python - 关于 Python if 语句的问题
问题描述
我正在使用 Anaconda 和 Spyder 运行 Python 3.6.4。
有谁知道为什么会发生以下情况?
当我执行以下代码时,python 打印“是”,这显然是错误的。
import numpy as np
a = 0
c = np.ones(150)
b = np.ones(10)
if a < len(c) & len(b) < 3:
print('yes')
虽然当我进行了轻微修改时,条件不满足并且 python 不打印任何内容
a = 0
c = np.ones(152)
b = np.ones(10)
if a < len(c) & len(b) < 3:
print('yes')
此外,如果我将“&”更改为“and”,一切都会按预期工作。
解决方案
这是由于运算符链接,&
优先。试试这个,注意括号:
if (a < len(c)) & (len(b) < 3):
print('yes')
&
是按位运算符,因此可用于组合两个布尔条件。在 Python 中,bool
是int
.
按位len(c) & len(b)
计算,结果为 2,因此您实际上是在评估:
if 0 < 2 < 3: # i.e. 0 < 2 and separately 2 < 3
推荐阅读
- python - 如何使用 Python 从具有许多 csv 的网站读取 csv
- javascript - IE10 的 webpack + babel 转译
- html - 去使用下拉值
- google-apps-script - 谷歌脚本复制一个选项卡,然后将公式更改为引用它复制的选项卡
- angular - /node_modules/moment-timezone/index.d.ts (47,77) 中的错误:';' 预期的。怎么修
- python - 为什么一列 1 会影响决策树分类器的结果?
- android - 如何在android studio中安全地处理资源?
- scala - 这个素数检查功能是如何工作的
- r - 如何使用 R 中的 Highcharts 删除绘图网格线
- r - 为什么我无法将我的包加载到 R 中,即使它们已安装?