Два не x.startswith () в операторе if - PullRequest
0 голосов
/ 06 июня 2019

Предположим, у меня есть этот список

y = ['bat','bats','cat','cats','dog','dogs']

Я хочу удалить все, что начинается с bat или cat.Поэтому в списке должны оставаться только «собака» и «собаки».

По какой-то причине, если я наберу это:

for i in y:
     if not i.startswith('bat') or not i.startswith('cat'):
          print(i)

Будет напечатан каждый элемент.

Но, если у меня есть только одно из предложений:

for i in y:
     if not i.startswith('bat'):
          print(i)

«летучая мышь» и «летучие мыши» не печатаются должным образом.

Что происходит со вторым не выражением i.startswith ()?

Заранее всем спасибо!

1 Ответ

2 голосов
/ 06 июня 2019

Логика неверна в этой строке:

if not i.startswith('bat') or not i.startswith('cat'):

Поскольку оператор является OR, только одно из условий должно быть истинным (или в данном случае не истинным для оператора NOT), чтобывведите if.

Однако, если оно заменено на оператор AND, оба оператора должны быть истинными, чтобы ввести условие if.

if not i.startswith('bat') and not i.startswith('cat'):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...