闪烁的尘埃
2021-08-02 12:19
采纳率: 100%
浏览 83

Python逻辑运算:为什么false+ false等于true?什么时候等于True?

img

图片转代码服务由CSDN问答提供 功能建议

In[92]:len(run.text)>30
Out[92]:False
1937:
In
bool(re.search(r'ld',run.text))
Out[931:False
In[94]:
len(run.text)>30&bool(re.search(n'ld,run.text))
Out1941
True
为什么这里是True
In[95]:2>384>5
Out[95]:False
  • 好问题 提建议
  • 收藏

5条回答 默认 最新

  • 已采纳

    pthon中 & 是数值二进制按位与运算符,不是逻辑运算符。pthon中 逻辑与运算符是 and

    数值二进制位运算符&的优先级高于 <,>,==关系运算符

    len(run.text)>30 & bool(re.search(r'\d',run.text))
    

    实际上等于是

    len(run.text) > ( 30 & bool(re.search(r'\d',run.text)))
    

    同样的 2>3 & 4>5 等于 2>(3 & 4)>5

    你改成真正逻辑与运算符 and 就好了

    len(run.text)>30 and bool(re.search(r'\d',run.text))
    

    如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • CSDN专家-sinjack 2021-08-02 12:31

    表达式要加上括号:(len(run.text))>30&(bool(re.search(n'ld,run.text)))
    原因:&的优先级更高。
    先运算30&bool(re.search(n'ld,run.text))结果为0,再判断len(run.text)>0 结果为True
    如有帮助,望点击我回答右上角【采纳】按钮支持一下。
    img

    评论
    解决 无用
    打赏 举报
  • 碧池阿蒂拉 2021-08-02 12:25

    &的优先级高于比较运算符

    评论
    解决 无用
    打赏 举报
  • guwei4037 2021-08-02 12:28

    加括号

    (len(run.text)>30) & (bool(re.search(r'\d',run.text)))

    评论
    解决 无用
    打赏 举报
  • 喜欢摸鱼的程序员 2021-08-02 13:56

    img
    逻辑运算
    & 就是 and
    有0则0 全1才1 意思就是只要两边有一个false 表达式的值就是false

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题