为什么在Python中'50><6'是true,而'50>>6'是false?

2024-06-01 09:18:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是在尝试一个简单的if语句,但它没有按预期工作。是我的错误还是if语句的功能我不知道?你知道吗

代码是:

i = 50
n = 6

if i >> n:
  print("I is greater")
elif i << n:
  print("I is lesser")
elif i == n:
  print("I and N are same")
else:
  print("no result")

即使我输入了一个更大或相等的值,输出也是“I是更小的”。请帮我理解这是怎么回事。你知道吗


Tags: andno代码功能ifis错误语句
2条回答

<<>>bitshift operators,不是比较运算符。50 >> 60,所以if语句的计算结果是false,因为它是falsy50 << 6是3200,所以if语句的计算结果是true,因为它是truthy。你知道吗

此代码可能按您“预期”的方式工作

i = 50
n = 6

if i > n:
  print("I is greater")
elif i < n:
  print("I is lesser")
elif i == n:
  print("I and N are same")
else:
  print("no result")

“<;<;”是按位左移。它在某种程度上相当于右操作数乘以2。你知道吗

“>;>;”是按位右移。它在某种程度上相当于右操作数乘以2。你知道吗

在您的示例中,“50<;<;6”表示左移50,即二进制中的110010(1*32+1*16+0*8+1*2+0*1=50),6次。因此,它变为110010000000=3200。在python中,非零数(如3200)的计算结果为True。你知道吗

同样,“50>;>;6”表示左移110010到左移6次。左移一次变为11001,左移两次变为1100。。。左移6次后变为0。你知道吗

在python中,零值的计算结果为False。你知道吗

相关问题 更多 >