代码之家  ›  专栏  ›  技术社区  ›  PeCaDe

python中带两个布尔值的运算符

  •  -1
  • PeCaDe  · 技术社区  · 4 年前

    为什么这两个表达式中的运算符“&”不起作用?

    # First, type bool
    bool(re.search(r'\d', "4foo"))
    >True
    # Second, type bool
    len("4foo")==4
    >True
    type(len("4foo")==4)))
    >bool
    

    像这样将两者与运算符“&”一起使用时,我得到 False 这是不正确的:

    # Expected output as this example:
    True&True
    >True
    
    # The "wrong" output:
     bool(re.search(r'\d', "4foo"))& (len("4foo")==4)
    >False
    

    在疯狂了一个小时后,我“解决”了这个问题,用的是我从来没想到会是“问题”:

    # The "correct" output(transforming a bool type into a bool type something that works but seems stupid...):
     bool(re.search(r'\d', "4foo"))&bool(len("4foo")==4)
    >True
    

    bool(re.search(r'\d', "4foo")) and len("4foo")==4
    
    2 回复  |  直到 4 年前
        1
  •  1
  •   Mayank Porwal    4 年前

    你需要这样做:

    替换 & 具有 and :

    In [638]: bool(re.search(r'\d', "4foo")) and len("4foo")==4                                                                                                                                                 
    Out[638]: True
    

    测试当 & (与真/假值一起使用时)测试两者是否为真。

        2
  •  1
  •   Marcello    4 年前

    注意括号

    len("4foo"==4) ------------> len("4foo")==4
    

    和条件

    re.search(r'\d', "4foo")and len("4foo")==4