Нажатие клавиши enter в функции input
код:
while True:
a = str(input("---> "))
text = "hello"
if a in text:
print(text)
вывод из терминала:
--->
hello
--->
hello
--->
hello
проблема в том что, когда я запрашиваю любой символ у пользователя через input(), но ввожу Enter, почему-то ввод Enter есть в слове "hello".
Ответы (2 шт):
while True:
a = input("--->")
text = "hello"
if a in list(text):
print(text)
решение в том, что нажатие клавиши enter вводит данный знак:
"" \
""
данная символы эквивалентны просто "", что в Python является обозначением типа данных, а именно строка
с помощью функции list() мы возвращаем список из строки
['h','e','l','l','o']
и string никак не может быть в list
Пустая строка (результат нажатия только клавиша 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)