цикл while(-1 or -1) не завершается

s = 143*'687'
while s.find('68') or s.find('7777'):
    s = s.replace('68', '7', 1);
    s = s.replace('7777', '7', 1);
print(s)

В дебагере видно, что получается строка 7, но цикл не завершается. А почему? Какие критерии для while, чтобы завершиться? В условии должен получится только 0? и как тогда подправить мой цикл?


Ответы (1 шт):

Автор решения: Za Ars

Метод проб и ошибок

'sad'.find('1')
# > -1

while работает, пока значение равно True

True в питоне - это все что не False (логично) - то есть все что не:

  • None
  • 0
  • ''
  • [] (list())
  • {} (dict())
  • set()
  • False
  • и тд

То есть чтобы ваш цикл завершился, нужно условие

s.find('68') > -1 or s.find('7777') > -1 (или !=)

→ Ссылка