Оператор с двумя логическими значениями в python - PullRequest
0 голосов
/ 14 апреля 2020

Почему оператор "&" не работает в этих двух выражениях?

# 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 ]

2 голосов
/ 14 апреля 2020

Вам необходимо сделать следующее:

Заменить & на and:

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

and проверяет, являются ли оба выражения логически истинными, тогда как & (при использовании со значениями True / False) проверяет, являются ли оба значения True.

1 голос
/ 14 апреля 2020

Обратите внимание на круглые скобки

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

и условие

re.search(r'\d', "4foo")and len("4foo")==4 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...