Любой язык программирования основан, прежде всего, на получении информации и осуществлении определенных действий с ней. Она может идти в двух направлениях – ввод и вывод. Первое – это непосредственно то, что зависит от действий пользователя. Допустим, написал он «шарик», а программа в ответ отнесла его к категории «игрушки» и вывела этот текст на экран.
Чтобы такое приложение было возможным, необходимо добиться того, чтобы программа каким-то образом запросила это слово у пользователя, а потом его приняла и обработала. Вот сегодня об этом и поговорим.
Пользовательский ввод в Python
Ввод и вывод – это две операции, которые выполняются в любой программе, независимо от того, на каком языке она написана. Точно так же, как человек говорит что-то другому и слушает его, программист или пользователь дает компьютеру определенные команды, а также получает от него какую-то информацию.
Вот процесс ввода команд или передачи информации называется вводом, а процесс передачи информации от компьютера к человеку называется выводом. Причем понятия ввода и вывода выходят за пределы программирования и расширяются в целом, до информатики. Так, из школы, возможно, вы слышали о двух типах устройств – ввода и вывода.
К первой категории относятся мышь, клавиатура, трекпад. В современных устройствах это еще и экран, который является и устройством ввода, и устройством вывода в случае со смартфонами или планшетами. Также примерами устройств ввода служат камеры и микрофоны.
Есть же еще и устройства вывода – экран, динамики и другие. В процессе использования компьютера ввод и вывод осуществляется регулярно. Программист же получает доступ к этим операциям на более глубоком уровне. В то время, как для пользователя ввод – это просто печать текста в браузере или мессенджере, то для программиста – это гораздо более сложный процесс. Впрочем, обучиться ему не составляет труда.
Поскольку Python – довольно медленный язык программирования по сравнению с другими, то информация также будет обрабатываться дольше по сравнению с тем же C. Тем не менее, он имеет все те же функции, а благодаря библиотекам и дополнительным модулям можно не изобретать велосипед, а пользоваться готовыми решениями.
Но начнем с азов. Получение информации в Python осуществляется с помощью двух функций – input() и raw_input(). Каждая из них вызывается, когда пользователю, согласно алгоритму, нужно указать информацию в командной строке. Пока это действие не будет выполнено, программа не будет выполняться дальше. Чтобы ввести текст, пользователю нужно нажать на клавишу Enter. В большинстве случаев эта кнопка отвечает за создание новой строки, но здесь – не тот случай.
Каждая из этих функций имеет дополнительный параметр prompt, который отображает текст, которым сопровождается ввод. Например, такой, как «Введите свое имя».
Функции input() и raw_input() в Python 2 и 3 отличаются. Сейчас подробнее разберем разницу между ними.
В чем разница между функциями input() и raw_input()?
Это довольно трудно объяснить из-за того, что отличие между ними зависит от того, какая версия языка программирования установлена на компьютере пользователя. Так, во второй версии Python функция raw_input() применяется для ввода через командную строку. В свою очередь, стандартная функция input() используется для ввода кода Python.
Сейчас же осталась только последняя из них – input(). И значение у нее – стандартный ввод данных пользователем. То есть, не кода, а строки. Если же пользователь Python 3 сталкивается с необходимостью совершить действие, которое выполняет функция input во второй версии языка, то для этого применяется другая функция – eval(input()).
Теперь давайте приведем немного примеров кода для более наглядного понимания, как все это работает во второй и третьей версиях.
# Python 2
txt = raw_input(«Укажите какую-нибудь информацию для проверки ввода в Python 2: «)
print «Вы указали следующую информацию:», txt
Укажите какую-нибудь информацию для проверки ввода в Python 2: Привет, мир!
Вы указали следующую информацию: Привет, мир!
# Python 3
txt = input(«Укажите какую-нибудь информацию для проверки ввода в Python 3: «)
print(«Вы указали следующую информацию:», txt)
Укажите какую-нибудь информацию для проверки ввода в Python 3: Привет, мир 3!
Вы указали следующую информацию: Привет, мир 3!
Поскольку вторая версия стабильно и бесповоротно устаревает, то мы будем описывать работу с третьей версией языка.
Строковый и числовой ввод
Стандартное действие, которое выполняется функцией input() – конвертация всех данных, введенных пользователем, в строковый формат. Это было наглядно продемонстрировано в прошлом примере.
Если же нам надо обрабатывать числа, введенные пользователем, то необходимо после того, как пользователь их укажет, сконвертировать их в числовой формат. Ведь по умолчанию они не будут распознаваться, как числа.
Это делается с помощью функции int(). В качестве аргумента используется имя переменной, в которую перед этим осуществлялся ввод.
То есть, в первой строчке используется функция input, а сразу за этим осуществляется конвертация строчного формата в числовой.
test_vor = input («Запишите числовое значение «)
test_digit = int(test_vor)
print («Вы ввели: «, test_digit)
Этот фрагмент кода запрашивает число, а потом полученную строку конвертирует в цифровой тип. После этого возвращает то же самое число, которое было введено пользователем приложения.
Можно значительно упростить задачу, заменив две строчки на одну. Для этого необходимо использовать функцию input() в качестве аргумента функции int().
test_number = int(input(«Введите число: «))
По факту, эта строка выполняет те же первые два действия, что и выше. Но этот алгоритм сжимается в одну строку.
Важно учесть, что эта функция превращает лишь в целочисленное значение. Если пользователь, допустим, ввел число с плавающей точкой, то возникнет ошибка.
Чтобы правильно работать со вводом чисел, необходимо научиться обрабатывать ошибки.
Обработка исключений ввода
Методов, позволяющих проверить, является ли значение, введенное пользователем, целым числом, несколько. Например, можно обрабатывать абсолютно все возможные исключения.
Давайте приведем в качестве примера следующий код.
example3 = input(“Какой у Вас возраст? “)
examplen = int(example3)
print(“Вам “, examplen)
Что будет, если ввести в консоль, к примеру, «двадцать пять»? В этом случае будет выдана ошибка «Value Error», поскольку невозможно конвертировать строку с нечисловыми значениями в числовой формат. Следовательно, программа не сможет далее быть выполнена и просто остановится.
Тем не менее, есть один способ существенно увеличить безопасность кода для программы. Для этого необходимо использовать пару try except, как в этом примере.
test3word = input(«Какое число вам нравится больше всего? «)
try:
test3num = int(test3word)
print(«Вам нравится число: «, test3num)
except ValueError:
print(«А Вы не указали число. Пожалуйста, введите число в числовом формате»)
Эта программа работает так: сначала консоль предлагает ввести число, которое больше всего нравится пользователю приложения. Он осуществляет ввод этого значения. Далее программа пытается конвертировать это число в числовой формат, а не строчный. Если это получается, то фактически приложение повторяет за пользователем. Если же нет, то тогда появляется ошибка, тип которой обрабатывается в строке except ValueError.
Если такая ошибка действительно произошла, приложение выдает эту ошибку.
Также можно в этом коде использовать с циклом, чтобы приложение обрабатывало ошибку несколько раз, до тех пор, пока не будет введено правильное значение.
Подробный пример
Теперь давайте рассмотрим один большой блок кода, демонстрирующий принцип работы с вводом значений в Python.
# Объявляем функцию, чтобы продемонстрировать принцип использования функции # input()
def example():
# Цикл, цель выполнения которого – возникновение исключения
while True:
test4word = input(«Назовите Ваше имя «)
try:
test4num = int(input(«Сколько времени вы проводите за просмотром социальных сетей?» ))
# В случае, если указанное пользователем значение не является числом, будет
# выдаваться ошибка
except ValueError:
# Выполнение цикла будет осуществляться ровно до того момента, как
# будет введено значение в правильном формате
print(«Error! Это не число, попробуйте снова.»)
# При успешном преобразовании в целое число,
# цикл закончится.
else:
print(«Впечатляет, «, test4word, «! Вы тратите», test4num*60, «минут или», test4num*60*60, «секунд на игры в своем телефоне!»)
break
# Вызываем функцию
example()
Вот такой код. Интересно? Видим, что с помощью встроенных инструментов языка Python вполне реально взаимодействовать с пользователем. Но это только уровень для начинающих. Существует еще множество различных инструментов, позволяющих получать от пользователя информацию. Например, чтение данных из файла, который открывается им. Есть и набор других возможностей, но они уже предназначены для более профессионального использования.
На данный момент вы изучаете самые азы. И используя материалы этой статьи, вы с легкостью сможете создать собственную программу, которая будет вести диалог с тем, кто ее запустил. Или же – написать собственный калькулятор, который рассчитывает сумму, производное нескольких значений, введенных пользователем.
Таким образом, спектр применения полученных сегодня знаний поистине огромный. Что же? Желаем удачи!