Нажатие клавиши enter в функции input

Рейтинг: 0Ответов: 2Опубликовано: 21.04.2023

код:

while True:
    a = str(input("---> "))
    text = "hello"
    if a in text:
        print(text)

вывод из терминала:

---> 
hello
---> 
hello
---> 
hello

проблема в том что, когда я запрашиваю любой символ у пользователя через input(), но ввожу Enter, почему-то ввод Enter есть в слове "hello".

Ответы

▲ 4

Пустая строка (результат нажатия только клавиша Enter) находится во всякой строке.
Потому вместо

if a in text:

примените

if а and а in text:

Объяснение:

Выражение

а and a in text 

значит «когда а непустая строка (т.е. не был нажат только клавиш Enter) и строка а находится в строке text».

(Первое a в контексте команды if имеет значение True тогда и только тогда, когда строка а непустая — см. часть «Объекты, которые приравниваются к False» в Используем объекты вместо True и False — truthy и falsy значения в Python.

Например, эти объекты имеют значение False:

  • пустой список: [];
  • пустой кортеж: ();
  • пустой словарь: {};
  • пустое множество: set();
  • пустая строка: "";
  • пустой диапазон: range(0).)

Примечание:

Еще лучше будет вместо переменной a применить выражение a.strip(), чтобы программа работала хорошо тоже после ввода пробелов перед / за вводимым текстом — метод .strip() их все удалит:

if а.strip() and а.strip() in text:

или сразу сначала применить метод .strip()

while True:
    a = input("--->").strip()
    text = "hello"
    if a and a in list(text):
        print(text)
▲ 0
while True:
    a = input("--->")
    text = "hello"
    if a in list(text):
        print(text)

решение в том, что нажатие клавиши enter вводит данный знак:

"" \
""

данная символы эквивалентны просто "", что в Python является обозначением типа данных, а именно строка

с помощью функции list() мы возвращаем список из строки

['h','e','l','l','o']

и string никак не может быть в list