Задать вопрос
@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, иди на новую итерацию. Я правильно понимаю это? Если нет, то как правильно?
  • Вопрос задан
  • 2773 просмотра
Подписаться 2 Простой 1 комментарий
Решения вопроса 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, условие не выполнилось.

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

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
31 янв. 2025, в 00:16
43000 руб./за проект
30 янв. 2025, в 21:33
5000 руб./за проект
30 янв. 2025, в 19:55
7000 руб./за проект