Python — универсальный язык программирования для веб-приложений, игр, машинного обучения и многих других областей. Он популярен во всем мире. В этой статье мы расскажем, как вводить данные в Python и какие инструменты использовать. Разберемся как это работает на примере реального кода.
Ввод это когда вы говорите программе сколько яблок берёт Петя, или скольки равен X, или же какой квадратик из трёх мы выберем.
В Python для этого существует одноименное слово, только на английском.
input() — команда для ввода.
Для ее запуска не нужно танцевать с бубном, что-то докачивать и устанавливать. Установленного питона и запущенной среды разработки будет достаточно.
phrase = input("Мой первый ввод будет здесь: ")
Получаем разные типы данных
Поскольку изначально, всё что бы мы не ввели будет являться строкой, то стоит знать, а как получить и другие типы данных.
Почему результатом input()
Если вкратце: программа хочет себя обезопасить от фатальных ошибок.
Так как вы может быть скажете, что хотите ввести число, а пользователь введёт букву “Н” - и вот какая это цифра❓
Поэтому ввод лучше сделать строкой, так как там можно и цифры и строки. И тогда условный ввод “Dominator777” или “Семь Над цать” не поломает нам программу.
Мы в разговорном языке называем такие числа дробными, но вообще в математике они называются числа с плавающей точкой. Слово “плавающий” здесь и будет переводиться как floating → сокр. float
Список (list)
Предположим, что тебе надо ввести набор слов, но не в одну строку, а чтобы каждое слово было отдельным элементом.
В качестве решения можно воспользоваться методом строки .split().
naborSlov = input("Введи фразу: ").split() # полученную фразу раскалываем по пробелу (.split() по умолчанию разделяет по пробелам)
# То есть при таком вводе: "Питон это круто и несложно",
# Мы получим это: ['Питон', 'это', 'круто', 'и', 'несложно']
naborSlov = input("Введи фразу: ").split(", ") # полученную фразу раскалываем по запятым и убирает пробел после запятой
# То есть при таком вводе: "Кирилл, Данил, Антон",
# Мы получим это: ['Кирилл', ' Данил', ' Антон']
Булевый тип (bool)
Булевый тип имеет только одно из двух состояний:
Правда (True)
Ложь (False)
Сперва важно понять одну вещь при работе с булевым типом данных. Все что не пустота, то правда:
Преобразованная пустая строка (””) будет ложью
Остальное будет правдой, даже пробел (” “)
isEnter = input("Всё или ничего: ")
if isEnter:
print("Пользователь что-то ввёл!")
Такой код выведет "Пользователь что-то ввёл!" только если было хоть что-то введено пользователем.
На самом деле, переводить можно в любой нужный вам тип данных, но показанные выше наиболее применимые.
Ввод в несколько переменных
Что если мы хотим спросить несколько переменных сразу?
Например, чтобы не писать так:
x = input("x: ")
y = input("y: ")
z = input("z: ")
Можно написать так:
x, y, z = input("x: "), input("y: "), input("z: ")
Но можно пойти дальше, и разбить одно значение сразу на несколько:
word1, word2, word3 = input("Введи три слова: ").split() # при вводе "Питон это круто"
print(f"w1={word1}, w2={word2}, w3={word3}") # получим w1=Питон, w2=это, w3=круто
Убираем символы слева/справа строки
Представим что в ваш input() пользователь написал: “ Подкрадули “
И на выходе мы и получим такую строку, со всеми её пробелами.
Починить этот потенциальный баг нам поможет метод .strip() — убирает символы справа и слева строки.
Да, по умолчанию убираются пробелы справа и слева.
Также мы можем убирать несколько символов сразу. Как? Указать их поштучно в кавычках.
clearedPhrase = input("Как тебя зовут, путник? > ").strip("-+! ") # p.s. не забываем перечислить и пробел!
# Пользователь ввел: “ -+Подкрадули?! “
# Мы получим: “Подкрадули?“
Также мы можем убирать с правой части при помощи .rstrip(); и с левой при помощи .lstrip().
Круто это всё, но как это применить? Как супер удобный способ получить положительное число в случае необходимости.
positive = input("Ты мне число, а я тебе модуль: ") # если ввели ----321
print(positive.lstrip("-")) # то мы выведем 321
А также для процесса валидации, но об этом позже.
Валидация
Валидация, если простым языком, это проверка данных на корректность и действия направленные на то, чтобы данные были корректными.
Банальный пример: пока значение неверное, спрашивать у игрока новое значение.
Зачем это может нам потребоваться? Например мы хотим получить число.
x = int(input("Введи число: ")) # полученную строку переводим в число при помощи команды int()
Но как можно предположить, если пользователь напишет “Семь Егоров”, то мы не сможем перевести это в число. Столкнувшись с чем-то красным и фатальным. Ошибкой…
Но мы можем эту фатальную ошибку отловить и обработать при помощи try и except.
while True: # бесконечный цикл. остановим тогда, когда получим корректное значени
try: # попытаемся выполнить следующие строки кода:
x = int(input("Введи число: "))
break # выйдем из цикла, если в строке выше не стокнулись с ошибкой
except ValueError: # Исключение класса ValueError возникает как раз в таких ситуациях, когда неверное значение подаётся для действия
print("Пожалуйста, впиши число(из цифр).") # Выполнится в том случае, если была фатальная ошибка с исключением ValueError