and的用法,为啥加了print以后结果与不加print不同?

为啥这个and输出是true呀?后面那个明明是错的呀?把print以后计算结果就是正常的了

img

print(number1<number2) and (number2>number3)
print(number1<number2) 没有返回值,所以为空,None是当作false处理的。
false and (number2>number3) ,后面的 (number2>number3)都没有执行。
而你打印出来的True是print(number1<number2)打印的。
你可以试试print(number1<number2) or print(number2>number3),当进行or判断时,两个print都会输出

因为你后面的表达式没有放在print的括号里
如果这样写,应该是你想要的结果

print((number1<number2)and(number2>number3))

实际上截图中的写法并不报错,因为程序理解的是使用 print(number1<number2) 和 number2>number3 进行逻辑的与运算,因为print返回的是None,number2>number3返回的False,两者进行与运算的返回值还是None,所以屏幕上只显示了print函数执行的结果

要想输出False ,请加括号啊

number1 = 10
number2 = 20
number3 = 30
print((number1 < number2) and (number2 > number3))


mark

python3的语法,print后面的内容需要括号全部包起来