首页 > 解决方案 > 关于 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”,一切都会按预期工作。

标签: pythonnumpyif-statement

解决方案


这是由于运算符链接,&优先。试试这个,注意括号:

if (a < len(c)) & (len(b) < 3):
    print('yes')

&是按位运算符,因此可用于组合两个布尔条件。在 Python 中,boolint.

按位len(c) & len(b)计算,结果为 2,因此您实际上是在评估:

if 0 < 2 < 3:  # i.e. 0 < 2 and separately 2 < 3

推荐阅读