@atsin4469

Как здесь работает if not?

tries = 3
while tries:
    print('>>> ', end='')
    command = input()
    if not command:
        continue
    if command in ('echo', 'cd', 'help'):
        break
    print('Unknown command!')
    tries -= 1
else:
    print('Too many bad tries!')
    command = None


Сейчас я понимаю работу if not command так: если значение не falsy, иди на новую итерацию. Я правильно понимаю это? Если нет, то как правильно?
  • Вопрос задан
  • 2382 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
command - строка, все проверки условий в if возвращают bool значение.

По сути, проверка выглядит примерно так:
if not bool(command):

bool от пустой строки вернет False, если строка не пустая - True
not - логический оператор, который возвращает True, если утверждение не True. В общем возвращает противоположное значение

Ну то есть
>>> not True
False
>>> not False
True


Если вводится пустая строка
if not bool(command):
, то условие выглядит как
if not False:
(потому что bool от пустой строки возвращает False). В свою очередь, not False возвращает True. В итоге конструкция превращается в
if True:
и условие выполняется.

Если строка не пустая, то соответственно будет if not True и затем if False, условие не выполнилось.

Так что, если строка пустая - цикл пропускает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы