- Функция input() в Python, ввод данных с клавиатуры.
- Позволяет производить ввод данных в консоли.
- Синтаксис:
- Параметры:
- Возвращаемое значение:
- Описание:
- Примеры получения/ввода данных из консоли/клавиатуры.
- Общие примеры использования функции input() .
- Проверка и преобразование типов при вводе данных с клавиатура.
- Эмуляция терминала с использованием функцией input() .
- Получение пользовательского ввода в Python с input()
- Ввод в Python
- Сравнение функций input и raw_input
- Строковый и числовой ввод
- Обработка исключений ввода
- Полный пример
- Выводы
- # Функция input() — ввод данных
- # Упражнения
- 2.1. Ввод и вывод данных. Операции с числами, строками. Форматирование
Функция input() в Python, ввод данных с клавиатуры.
Позволяет производить ввод данных в консоли.
Синтаксис:
Параметры:
Возвращаемое значение:
- строка str, даже если вводятся цифровые значения.
Описание:
Функция input() позволяет обеспечить ввод пользовательских данных из консоли. Если передан необязательный аргумент подсказки prompt , то он записывается в стандартный вывод без завершающей строки. Затем функция читает строку из ввода и преобразует ее в СТРОКУ, убирая завершающий символ строки ‘\n’ и возвращает ее в качестве значения.
Другими словами, все что вводится в консоль при использовании встроенной функции input() преобразуется в тип str . Это происходит в том числе и с числами. Следовательно, числовые данные, перед их использованием необходимо распознавать и преобразовывать к нужным типам.
Если был импортирован модуль readline , то функция input() будет использовать его для обеспечения сложных функций редактирования строк и истории.
- В случае считывания EOF (признак конца файла), поднимается исключение EOFError .
- Перед чтением ввода, функция input() вызывает событие аудита input с аргументом prompt .
- После успешного чтения ввода, вызывает событие аудита input c результатом resultс .
Примеры получения/ввода данных из консоли/клавиатуры.
Общие примеры использования функции input() .
Проверка и преобразование типов при вводе данных с клавиатура.
Пример представляет собой программу подсчета суммы или произведения введенных в консоль чисел. В примере будем распознавать числовые типы на примере типов int и float , читаемые функцией input() из консоли интерпретатора Python.
Эмуляция терминала с использованием функцией input() .
Для воспроизведения вывода ошибок при выполнении команд в воображаемой «консоли» воспользуемся модулем traceback . Выполнять введенный код будем при помощи встроенной функции exec() .
Получение пользовательского ввода в Python с input()
Получение и обработка информации — один из важнейших элементов любого языка программирования, особенно если речь идет о получении информации от пользователей.
Python, будучи медленным относительно таких языков, как C или Java, предлагает продвинутые инструменты для получения, анализа и обработки данных от конечного пользователя.
В этом материале речь пойдет о том, какие функции Python можно использовать для этих целей.
Ввод в Python
Для получения информации с клавиатуры в Python есть функции input() или raw_input() (о разнице между ними чуть позже). У них есть опциональный параметр prompt , который является выводимой строкой при вызове функции.
Когда input() или raw_input() вызываются, поток программы останавливается до тех пор, пока пользователь не введет данные через командную строку. Для ввода нужно нажать Enter после завершения набора текста. Обычно Enter добавляет символ новой строки ( \n ), но не в этом случае. Введенная строка просто будет передана приложению.
Интересно, что кое-что поменялось в принципе работе функции между Python 2 и Python 3, что отразилось в разнице между input() и raw_input() . Об этом дальше.
Сравнение функций input и raw_input
Разница между этими функциями зависит от версии Python. Так, в Python 2 функция raw_input() используется для получения ввода от пользователя через командную строку, а input() оценивает ее и попробует запустить как код Python.
В Python 3 от raw_input() избавились, оставив только input() . Она используется для получения ввода пользователя с клавиатуры. Возможности input() из Python 2 в Python 3 работать не будут. Для той же операции нужно использовать инструкцию eval(input()) .
Взгляните на пример функции raw_input в Python 2.
Вывод
А вот как она работает в Python 3
Вывод
Дальше в материале будет использоваться метод input из Python 3, если не указано другое.
Строковый и числовой ввод
По умолчанию функция input() конвертирует всю получаемую информацию в строку. Прошлый пример продемонстрировал это.
С числами нужно работать отдельно, поскольку они тоже изначально являются строками. Следующий пример показывает, как можно получить информацию числового типа:
Вывод
Того же можно добиться и таким образом:
Здесь сразу после сохранения ввода происходит преобразование и присваивание значения переменной.
Нужно лишь отметить, что если пользователь ввел не целое число, то код вернет исключение (даже если это число с плавающей точкой).
Обработка исключений ввода
Есть несколько способов, как можно удостовериться в том, что пользователь ввел корректные данные. Один из них — перехватывать все возможные ошибки, которые могут возникнуть.
Вот такой код считается небезопасным:
Запустим его и введем следующее:
При вызове функции int() со строкой Пять появится исключение ValueError , и программа остановит работу.
Вот как можно сделать код безопаснее и обработать ввод:
Этот блок оценит ввод. Если он является целым числом, представленным в виде строки, то функция input() конвертирует его в целое число. Если нет, то программа выдаст исключение, но вместо ошибки оно будет перехвачено. В результате вызовется вторая инструкция print .
Вот так будет выглядеть вывод с исключением.
Такой код можно объединить с другой конструкцией, например, циклом for, чтобы убедиться, что код будет выполняться постоянно, до тех пор, пока пользователь не введет те данные, которые требуются.
Полный пример
Вывод:
Выводы
В этой статье вы узнали, как встроенные инструменты Python используются для получения пользовательского ввода в разных форматах. Также научились обрабатывать исключения и ошибки, которые могут возникнуть в процессе.
# Функция input() — ввод данных
За ввод в программу данных с клавиатуры в Python отвечает функция input() . Когда вызывается эта функция, программа останавливает свое выполнение и ждет, когда пользователь введет текст. После этого, когда он нажмет Enter, функция input() заберет введенный текст и передаст его программе, которая уже будет обрабатывать его согласно своим алгоритмам.
Если в интерактивном режиме ввести команду input() , то ничего интересного вы не увидите. Компьютер будет ждать, когда вы что-нибудь введете и нажмете Enter или просто нажмете Enter . Если вы что-то ввели, это сразу же отобразиться на экране:
Функция input() передает введенные данные в программу. Их можно присвоить переменной. В этом случае интерпретатор не выводит строку сразу же:
В данном случае строка сохраняется в переменной answer, и при желании мы можем вывести ее значение на экран.
Куда интересней использовать функцию input() в скриптах – отдельно взятых файлах с кодом. Рассмотрим такую программу:
При запуске программы, компьютер ждет, когда будет введена сначала одна строка, потом вторая. Они будут присвоены переменным nameUser и user_city . После этого значения этих переменных выводятся на экран с помощью форматированного вывода:
Вышеприведенный скрипт далек от совершенства. Откуда пользователю знать, что хочет от него программа? Чтобы не вводить в замешательство многозадачного биоробота, для функции input() предусмотрен специальный параметр-приглашение. Это приглашение выводится на экран при вызове input() . Усовершенствованная программа может выглядеть так:
Результат выполнения получиться следующий:
Обратите внимание, что в программу поступает строка. Даже если ввести число, функция input() все равно вернет его строковое представление. Но что делать, если надо получить число? Ответ: использовать функции преобразования типов:
Результат выполнения может быть следующий:
В данном случае с помощью функций int() или float() строковые значения переменных number_1 и number_2 преобразуются соответственно в целое число или дробное число. После этого новые численные значения присваиваются тем же переменным.
# Упражнения
Напишите программу, которая запрашивала бы у пользователя:
- его имя (например, «What is your name?»)
- возраст («How old are you?»)
- место жительства («Where do you live?»)
После этого выводила бы три строки:
Значения имя , возраст , место_жительства — произвольные, вводимые пользователем.
Напишите программу, которая предлагала бы пользователю ввести три числа, а затем решить пример составленный из введенных чисел. Потом выводила бы на экран правильный ответ и ответ пользователя. Пример должен вычисляться. Подумайте, нужно ли здесь преобразовывать строку в число.
Результат выполнения может быть следующий:
Другой пример выполнения этой же программы:
Запросите у пользователя четыре числа. Отдельно сложите первые два, отдельно вторые два числа и выведите суммы. Разделите первую сумму на вторую и выведите результат на экран.
2.1. Ввод и вывод данных. Операции с числами, строками. Форматирование
В данном учебном курсе мы будем писать программы без графического пользовательского интерфейса, то есть без кнопок, текстовых полей ввода и т. д. Программы будут принимать на вход данные от пользователя с клавиатуры (а чуть позже мы научимся работать с файловым вводом и выводом), а выводить результат будут на экран. Всё взаимодействие с программой будет происходить в командной строке, также называемой консолью или терминалом.
Во введении к курсу мы узнали, что командная строка в среде разработки Visual Studio Code находится внизу на вкладке «Терминал». Именно в ней мы будем вводить данные с клавиатуры, а программа будет выводить результаты. Как было сказано ранее, мы будем писать компьютерные программы, которые принимают на вход данные, работают с ними и выводят результат на экран.
Вспомним программу из введения:
В этой программе мы вызываем встроенную функцию под названием print() . Как она устроена внутри, нам пока не столь важно. Главное — запомнить, что у неё есть имя, по которому к ней можно обратиться, плюс она принимает данные и обрабатывает их. О том, какими могут быть данные, мы тоже поговорим позже — в нашем примере мы передаём строку «Привет, мир!».
В Python строки заключены в кавычки — можно использовать одинарные, двойные и тройные (рекомендуется их составлять из трёх двойных). Внутри кавычек одного вида можно использовать другой вид кавычек как часть выводимой на экран строки.
- print(‘Привет, мир!’)
- print(«Привет, мир!»)
- print(«»»Привет, мир!»»»)
- print(«Программа выводит фразу ‘Привет, мир!'»)
Данные в программу могут поступать различными способами. Самый простой и привычный для пользователя — это ввод с клавиатуры. Для этого в Python используется функция input() , которая возвращает в программу введённую пользователем строку. Но данные нужно куда-то сохранить, и в этом нам помогают переменные. Переменным назначаются имена, в них записываются значения, и затем они используются в программе по мере необходимости.
Напишем программу, которая получает от пользователя строку и выводит на экран:
После запуска программы происходит приостановка выполнения и в терминале появляется приглашение для ввода данных:
После ввода данных необходимо нажать клавишу Enter . Программа запишет введённые данные в переменную phrase и продолжит выполнение со следующей строчки. Переменная начинает существовать в программе, когда в неё записывается какое-то значение. В момент записи значения переменной назначается тип данных, определённый в соответствии со значением.
В нашем примере в переменную phrase записывается строка, введённая пользователем. Поэтому переменной phrase назначается встроенный в язык Python тип данных str . Тип данных str используется для хранения строк, а сами строки являются упорядоченной последовательностью символов.
У функции input() можно задать параметр-строку перед вводом значения — и тогда указанный текст будет сопровождать приглашение к вводу данных:
Для именования переменных и правильного оформления кода существует стандарт PEP 8 (Python Enhancement Proposals), который следует соблюдать. Согласно стандарту PEP 8, имена переменных должны содержать маленькие буквы английского алфавита и символ «подчёркивание» для разделения слов в имени. Пример имён переменных по стандарту: value, first_value.
Нельзя использовать следующие однобуквенные имена переменных:
- I (большая английская i);
- l (маленькая английская L);
- O.
Эти однобуквенные имена усложнят читаемость кода, так как могут быть перепутаны между собой или с цифрами. Все стандарты PEP можно посмотреть на этой странице.
Но вернёмся к функции print() . С её помощью можно выводить сразу несколько значений. Для этого их нужно перечислить через запятую. Выведем, например, фразу Добрый день, %имя%. :
В консоли отобразится:
Как видим, результат работы программы не соответствует нашим ожиданиям, так как между словом «Пользователь» и точкой появился пробел. Данный пробел является символом, который по умолчанию ставится между выводимыми значениями. Вместо пробела можно указать любую другую строку, даже пустую. Для этого нужно передать в функцию print() именованный аргумент sep (англ. separator — «разделитель»). Сделаем так, чтобы вместо пробела в качестве разделителя использовалась пустая строка:
В консоли отобразится:
Но в таком случае необходимые пробелы нам придётся ставить самим, а это неудобно. К счастью, в Python существует удобный и мощный инструмент для форматирования строк — f-строки. Чтобы задать f-строку, необходимо поставить букву f перед открывающей кавычкой строки. Далее f-строка записывается как единое целое, с учётом правил её форматирования, и закрывается соответствующей кавычкой:
Внутри f-строк можно обращаться к переменным, используя фигурные скобки, как в примере выше, а также производить операции, выполнять функции и подставлять их результаты в данную строку. И это только малая часть возможностей f-строк. Более подробно про них можно почитать в данном источнике.
Использование f-строк является приоритетным способом форматирования. Наряду с f-строками существует функция format() , которая также предназначена для удобного форматирования (мы рассмотрим её чуть позже). Также форматирование строк может производиться с помощью символа % . Однако данный способ форматирования является устаревшим (здесь можно почитать про него подробнее).
В строках можно применять управляющие символы, начинающиеся с символа «слеш» (). Например:
- \n — переход на новую строку;
- \t — табуляция;
- \r — возврат каретки в начало строки;
- \b — возврат каретки на один символ.
Кроме того, с помощью слеша можно экранировать символы, то есть делать их частью выводимой строки. Например, для вывода символа \ необходимо его экранировать самим собой:
Подробнее об экранировании можно почитать в этом источнике.
В функции print() кроме параметра sep существует параметр end , который определяет символ в конце строки. Значение по умолчанию для него — переход на новую строку, обозначаемый как \n . Если вывести строки с помощью нескольких использований функции print() , то вывод каждой из них будет осуществлён с новой строки:
Над строками можно производить следующие операции:
- сложение (конкатенация строк);
- умножение строки на целое число.
Результатом сложения строк будет новая строка, представляющая собой записанные последовательно складываемые строки (строки как бы склеиваются друг с другом, образуя новую строку).
При умножении строки на целое число n получается новая строка, состоящая из n дублирований исходной строки. Например, выведем 10 символов — подряд:
В одной из следующих глав мы познакомимся с другими возможностями Python по работе со строками. А сейчас перейдём к работе с числами. Для создания целочисленной переменной в программе достаточно назначить ей имя и присвоить целочисленное значение. Например:
По аналогии создаются вещественные числовые переменные, только в качестве разделителя целой и дробной частей используется десятичный разделитель «точка»:
Для преобразования строк в числа и наоборот используются следующие функции:
- int() — преобразует строку (или вещественное число) в целое число. Дополнительно можно указать, в какой системе счисления было записано исходное число. По умолчанию используется десятичная система. При конвертации вещественного числа в целое отбрасывается дробная часть;
- float() — преобразует строку (или целое число) в вещественное число;
- str() — преобразует значения (в общем случае не только числовые) в строки.
Рассмотрим несколько примеров применения этих функций.
В результате выполнения программы получим:
Первый результат — результат сложения (конкатенации) двух строк. Второй — результат сложения целых чисел, которые были преобразованы из строк функцией int() .
Здесь программа выведет в консоли результат 3 . Дробная часть после десятичного разделителя была отброшена при преобразовании в целое число.
Программа выведет: 9.25 .
А чтобы вводить целые или вещественные числа с клавиатуры, можно использовать уже знакомую нам функцию input() в сочетании с функциями int() и float() :
Для работы с числовыми переменными доступны следующие математические операции:
- сложение — x + y ;
- вычитание — x — y ;
- умножение — x * y ;
- деление — x / y ;
- возведение в степень x ** y .
Используем все эти операции в следующей программе:
Вывод программы будет таким:
Необходимо учитывать, что если выполняется операция деления или хотя бы один из операндов является вещественным числом, то результат также будет вещественным.
Например, выполнение следующего кода выведет на экран 2.0 :
Для целых чисел дополнительно доступны операции:
- целочисленное деление — x // y ;
- остаток от деления — x % y .
Эти операции можно использовать, например, для получения определённых цифр числа. Получим последнюю цифру числа 1234 (то есть остаток от деления на 10):
Для получения предпоследней цифры нужно «отрезать» последнюю цифру целочисленным делением на 10, а затем у нового числа найти последнюю цифру — уже известным нам способом:
Чтобы закрепить новые знания, рекомендуем вам прорешать задачи для этой главы. А в следующей вы узнаете, как создавать программы, способные учитывать несколько вариантов развития событий.