首页 > 解决方案 > 带有 isalpha() 的波浪号 TRUE 返回 -2 而不是 FALSE

问题描述

玩弄isalpha(),我注意到一些奇怪的行为。

"a".isalpha()
>>True
"2".isalpha()
>> False

上面的两个语句返回了我期望的结果。但是,现在在之前添加波浪号就没那么有意义了。

~"a".isalpha()
>> -2
~"2".isalpha()
>> -1

为什么会这样?我发现使用not而不是~返回我期望的输出,但对上述行为感兴趣。

not "a".isalpha()
>> False
not "2".isalpha()
>> True

标签: python-3.xisalpha

解决方案


从关于按位运算符的python文档(强调我的):

~ x:返回 x 的补码 - 通过将每个 1 转换为 0 和将每个 0 转换为 1 得到的数字。这与 -x - 1 相同。

由于在 python 中True == 1False == 0,~True == -1 - 1 == -2~False == -0 - 1 == -1.

正如您所发现的,要执行您想做的事情(逻辑逆),您需要使用not运算符。


推荐阅读