При использовании пустой строки not in всегда False (Win10.x64)

DiamonDik1976

Новичок
Пользователь
Июл 16, 2021
3
0
1
Python:
proceed = ''

while proceed not in 'ДНП':
    print('Продолжить? (Д): Д - Да, Н - Нет, П - Позже')
    proceed = input().upper()

При выполнении приведенного кода выражение not in всегда False. При исходном значении переменной '', при значении переменной равной любому символу условие выполняется.

Долго гуглил и не смог найти ответа.
 

DiamonDik1976

Новичок
Пользователь
Июл 16, 2021
3
0
1
Версия Python 3.9
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
При использовании пустой строки not in всегда False
Так происходит потому, что в питоне пустая строка входит в любую строку.
Например, этот код вернет True:
Python:
print('' in 'ДНП')  # True
соответственно код с проверкой not in вернет False:
Python:
print('' not in 'ДНП')  # False
Чтобы учесть пустую строку в вашем коде можно добавить проверку на нее в условие цикла while:
Python:
proceed = ''

while not proceed or proceed not in 'ДНП':
    print('Продолжить? (Д): Д - Да, Н - Нет, П - Позже')
    proceed = input().upper()
 
  • Мне нравится
Реакции: robisho

DiamonDik1976

Новичок
Пользователь
Июл 16, 2021
3
0
1
Так происходит потому, что в питоне пустая строка входит в любую строку.
Например, этот код вернет True:
Python:
print('
[CODE=python]proceed = ''

while not proceed or proceed not in 'ДНП':
    print('Продолжить? (Д): Д - Да, Н - Нет, П - Позже')
    proceed = input().upper()
Спасибо. Помогло. Но логика немного странная, после плюсов.)
Буду привыкать.
 

Форум IT Специалистов