Как ввести строку с клавиатуры

Обновлено: 21.11.2024

Когда мы говорим "ввод", мы имеем в виду ввод данных в программу. Входные данные могут быть предоставлены в виде файла или из командной строки. Программирование на языке C предоставляет набор встроенных функций для чтения введенных данных и передачи их программе в соответствии с требованиями.

Когда мы говорим «Вывод», это означает отображение некоторых данных на экране, принтере или в любом файле. Программирование на C предоставляет набор встроенных функций для вывода данных на экран компьютера, а также для их сохранения в текстовых или двоичных файлах.

Стандартные файлы

Программирование на C рассматривает все устройства как файлы. Таким образом, такие устройства, как дисплей, адресуются так же, как и файлы, и следующие три файла автоматически открываются при выполнении программы, чтобы обеспечить доступ к клавиатуре и экрану.

Стандартный файл Указатель файла Устройство
Стандартный ввод stdin Клавиатура
Стандартный вывод stdout Экран
Стандартная ошибка stderr< /td> Ваш экран

Указатели файлов — это средства доступа к файлу для чтения и записи. В этом разделе объясняется, как считывать значения с экрана и как распечатывать результат на экране.

Функции getchar() и putchar()

Функция int getchar(void) считывает с экрана следующий доступный символ и возвращает его как целое число. Эта функция считывает только один символ за раз. Вы можете использовать этот метод в цикле, если хотите прочитать более одного символа с экрана.

Функция int putchar(int c) помещает переданный символ на экран и возвращает тот же символ. Эта функция помещает только один символ за раз. Вы можете использовать этот метод в цикле, если хотите отобразить на экране более одного символа. Проверьте следующий пример —

Когда приведенный выше код скомпилирован и выполнен, он ждет, пока вы введете текст. Когда вы вводите текст и нажимаете ввод, программа продолжает работу, считывает только один символ и отображает его следующим образом —

Функции gets() и puts()

Функция char *gets(char *s) считывает строку из стандартного ввода в буфер, на который указывает s, до завершающего символа новой строки или EOF (конец файла).

Функция int puts(const char *s) записывает строку 's' и 'a' после новой строки в стандартный вывод.

ПРИМЕЧАНИЕ. Хотя использование функции gets() считается устаревшим, вместо функции gets лучше использовать fgets().

Когда приведенный выше код скомпилирован и выполнен, он ждет, пока вы введете текст. Когда вы вводите текст и нажимаете ввод, программа продолжает работу и считывает всю строку до конца и отображает ее следующим образом: —

Функции scanf() и printf()

Функция int scanf(const char *format, . ) считывает ввод из стандартного потока ввода stdin и сканирует этот ввод в соответствии с предоставленным форматом.

Функция int printf(const char *format, . ) записывает вывод в стандартный поток вывода stdout и создает вывод в соответствии с предоставленным форматом.

Формат может быть простой постоянной строкой, но вы можете указать %s, %d, %c, %f и т. д. для печати или чтения строк, целых чисел, символов или чисел с плавающей запятой соответственно. Существует множество других доступных вариантов форматирования, которые можно использовать в зависимости от требований. Давайте теперь обратимся к простому примеру, чтобы лучше понять концепции —

Когда приведенный выше код скомпилирован и выполнен, он ждет, пока вы введете текст. Когда вы вводите текст и нажимаете ввод, программа продолжает работу, считывает ввод и отображает его следующим образом —

Здесь следует отметить, что scanf() ожидает ввода в том же формате, в котором вы указали %s и %d, что означает, что вы должны предоставить допустимые входные данные, такие как «целочисленная строка». Если вы укажете «строковая строка» или «целое целое число», то это будет считаться неправильным вводом. Во-вторых, при чтении строки scanf() прекращает чтение, как только встречает пробел, поэтому «это тест» — это три строки для scanf().

Синтаксис функции input():

Строка подсказки печатается на консоли, и пользователю предоставляется возможность ввести значение. Вы должны напечатать некоторую полезную информацию, чтобы помочь пользователю ввести ожидаемое значение.

Получение пользовательского ввода в Python

Вот простой пример получения пользовательского ввода и вывода его на консоль.

Вывод:

Ввод данных пользователем Python

Какой тип введенного пользователем значения?

Введенное пользователем значение всегда преобразуется в строку, а затем присваивается переменной.Давайте подтвердим это, используя функцию type() для получения типа входной переменной.

Вывод:

Как получить целое число в качестве ввода пользователя?

Невозможно получить целое число или любой другой тип в качестве пользовательского ввода. Однако мы можем использовать встроенные функции для преобразования введенной строки в целое число.

Вывод:

Целое число, введенное пользователем Python

Ввод данных пользователем Python и пример ошибки EOFError

Когда мы входим в EOF, функция input() вызывает ошибку EOFError и завершает работу программы. Давайте рассмотрим простой пример с использованием PyCharm IDE.

Вывод:

Пользовательский ввод Python вызывает ошибку EOFError

Пример выбора пользователем Python

Мы можем создать интеллектуальную систему, предоставив пользователю выбор и принимая во внимание вводимые им данные для продолжения выбора.

Вот пример вывода выполнения вышеуказанной программы.

Выбор пользовательского ввода Python

Кратко о функции Python raw_input()

Функция raw_input() использовалась для ввода данных пользователем в версиях Python 2.x. Вот простой пример интерпретатора командной строки Python 2.7, показывающий использование функции raw_input().

Эта функция устарела и удалена из Python 3. Если вы все еще используете версии Python 2.x, рекомендуется перейти на версии Python 3.x.

Заключение

В Python очень легко получить пользовательский ввод из функции input(). В основном он используется, чтобы предоставить пользователю выбор операции, а затем соответствующим образом изменить ход программы.

Однако программа бесконечно ожидает ввода данных пользователем. Было бы неплохо иметь некоторое время ожидания и значение по умолчанию на случай, если пользователь не введет значение вовремя.

Получите пользовательский ввод с помощью Python, используя функцию input(). Пользователь может вводить данные с клавиатуры в консоли. В этой статье вы узнаете, как получить ввод с клавиатуры.

В старых версиях Python использовалась устаревшая функция raw_input().

  • Узнайте, как принимать данные от пользователя и системы в Python.
  • Принимать любой тип ввода с клавиатуры от пользователя (целое число, число с плавающей запятой и строку)
  • Узнайте более интересное форматирование вывода.

Синтаксис функции input()

Синтаксис функции input():

В качестве параметра принимает строку, которая печатается в терминале.
Это необязательный параметр, иногда называемый подсказкой.

Параметр представляет собой текст, выводимый на экран. Если мы говорим о тексте, мы говорим строка.

Вы можете распечатать информацию для пользователя, например, какое значение он должен ввести.

Функция input():

  • Используйте функцию input(), чтобы получить пользовательский ввод Python с клавиатуры
  • Нажмите клавишу ввода после ввода значения.
  • Программа ожидает ввода данных пользователем неопределенно долго, тайм-аута нет.
  • Функция ввода возвращает строку, которую можно сохранить в переменной
  • Завершить с помощью Ctrl-D (Unix) или Ctrl-Z+Return (Windows)

Получение пользовательского ввода в Python

Вот простой пример, который получает пользовательский ввод и печатает его в терминале.

Функция input() получает пользовательский ввод (клавиатура) и сохраняет его в имени переменной.

Здесь имя является переменной. Функция print() выводит его на экран.

Пользователь должен нажать клавишу ввода в командной строке. Затем введенная строка отправляется в ваше приложение.

Итак, чтобы получить текстовое значение, вы можете использовать функцию input(), которая принимает в качестве входных данных строку для печати.

Примечание: не забудьте присвоить ввод переменной, var = input() .

Вы можете использовать причудливые выходные данные с именем форматированные строки или f-строки.
Для этого поставьте f перед строкой и используйте фигурные скобки для вывода ваша переменная:

  • Функция input() возвращает строку. Это можно сохранить в переменной (имя)
  • Затем переменная отображается на экране с помощью функции print().
  • Используя форматированные строки (буква f впереди), вы можете смешивать переменные с текстом.

Теперь вы можете вводить данные с клавиатуры, они будут сохранены в имени переменной.

Тип возвращаемого значения

Любое значение, которое вы вводите в input(), сохраняется как string str .
Вы можете подтвердить это, вызвав type()

См. приведенный ниже пример в оболочке Python:

Числа не имеют типа str . Поэтому их необходимо явно преобразовать в числовой тип, например int или float. Вы также можете проверить тип числовых переменных:

Как получить целое число в качестве ввода пользователя?

Если вы вызываете функцию input(), она возвращает обычный текст (строку). Поэтому, если вы хотите использовать целые числа, вам нужно преобразовать строку в целое число.

Чтобы получить целое число (целое число), вы можете сделать следующее:

Получить целочисленный пользовательский ввод в одной строке:

Вы можете получить несколько переменных от пользователя и использовать их в своей программе.
Приведенная ниже программа получает переменную x и переменную y, а затем суммирует и выводит их.

Учтите, что если пользователь на самом деле не вводит целое число, этот код вызовет исключение.

Поэтому обязательно введите число. Если вы хотите предотвратить исключения, см. раздел ниже Обработка исключений ввода.

Читать ввод как число с плавающей запятой

Чтобы получить число (нецелое), например число с плавающей запятой, вы можете вызвать метод float() для преобразования строки.

Плавающая (с плавающей запятой) – это число, например 1,5 , 3,123 , 1,75 , 1,01 и т. д.

Ввод должен быть с плавающей запятой, любой другой ввод вызовет исключение. См. раздел Обработка исключений ввода.

Ввод данных пользователем Python и пример ошибки EOFError

Программа может иметь ошибку EOFError. Это исключение возникает, если функция input() не считывала никаких данных.
Это будет вызвано не простой клавишей ввода, а прерыванием программы с помощью Ctrl+D .

Если у вас есть такая программа:

Вы можете прервать программу, нажав Ctrl+D (EOF). Это вызывает ошибку EOFError и завершает работу скрипта.

Пример выбора пользователем Python

Вы можете создать систему ввода с множественным выбором.
Сначала получите ввод с клавиатуры, вызвав функцию input().

Затем вы можете оценить выбор, используя структуру if-elif-else.

Примечание. Символ == проверяет равенство. Python чувствителен к регистру.

Важно использовать 4 пробела с каждым отступом, а не табуляцию и не разное количество пробелов.

Обработка исключений ввода

Если пользователь вводит неверный ввод или недопустимый ввод, Python может создать исключение. Чтобы справиться с этим, вы можете использовать код ниже:

raw_input() — старые версии

В Python 3 и более поздних версиях вы можете использовать функцию input().
В более ранних версиях Python использовалась функция raw_input().

Разницы между этими функциями нет, только название версии. Хотя это та же функциональность, но вы должны использовать функцию input().

Функция raw_input() объявлена ​​устаревшей и удалена из Python 3.
Если вы все еще используете версию Python 2.x, обновите ее сейчас.

Заключение

Вы можете принимать пользовательский ввод с помощью функции input(). Это ожидает ввода с клавиатуры на неопределенный срок. Если вы добавите параметр, он напечатает этот текст перед вводом пользователем.

Вы также увидели, как обрабатывать неверный ввод, и узнали о разнице между Python 2 и Python 3 (и новее).

Смотреть сейчас Это руководство содержит связанный с ним видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным учебным пособием, чтобы углубить свое понимание: Чтение входных данных и Написание выходных данных в Python

Чтобы программа была полезной, она обычно должна взаимодействовать с внешним миром, получая входные данные от пользователя и отображая данные о результатах обратно пользователю. В этом руководстве вы узнаете о вводе и выводе Python.

Ввод может поступать от пользователя непосредственно через клавиатуру или из внешних источников, таких как файлы или базы данных. Выходные данные могут отображаться непосредственно на консоли или в среде IDE, на экране через графический интерфейс пользователя (GUI) или снова во внешнем источнике.

В предыдущем руководстве этой вводной серии вы:

  • Сравнение различных парадигм, используемых языками программирования для реализации определенной итерации.
  • Узнал об итераторах и итераторах — двух концепциях, лежащих в основе определенной итерации в Python.
  • Связал все вместе, чтобы узнать о циклах for в Python

К концу этого руководства вы будете знать, как:

  • Принимать пользовательский ввод с клавиатуры с помощью встроенной функции input()
  • Отображение вывода на консоль с помощью встроенной функции print()
  • Форматировать строковые данные с помощью f-строк Python

Без дальнейших церемоний, давайте приступим!

Бесплатный бонус: нажмите здесь, чтобы получить памятку по Python и изучить основы Python 3, такие как работа с типами данных, словарями, списками и функциями Python.

Чтение ввода с клавиатуры

Программы часто должны получать данные от пользователя, обычно путем ввода с клавиатуры. Один из способов сделать это в Python — использовать input() :

Функция input() приостанавливает выполнение программы, чтобы пользователь мог ввести строку ввода с клавиатуры. Как только пользователь нажимает клавишу Enter, все введенные символы считываются и возвращаются в виде строки:

Обратите внимание, что возвращаемая строка не включает новую строку, сгенерированную, когда пользователь нажимает клавишу Enter.

Если вы включите необязательный

аргумент, затем функция input() отображает его как подсказку, чтобы пользователь знал, что вводить:

input() всегда возвращает строку. Если вам нужен числовой тип, вам нужно преобразовать строку в соответствующий тип с помощью встроенной функции int() , float() или complex() :

В приведенном выше примере выражение число + 100 в строке 3 недопустимо, поскольку число является строкой, а 100 — целым числом. Чтобы избежать этой ошибки, строка 8 преобразовывает число в целое число сразу после сбора пользовательского ввода. Таким образом, к расчетному числу + 100 в строке 10 нужно добавить два целых числа. Благодаря этому вызов print() выполняется успешно.

Примечание к версии Python. Если вы обнаружите, что работаете с кодом Python 2.x, вы можете столкнуться с небольшой разницей в функциях ввода между версиями Python 2 и 3.

raw_input() в Python 2 считывает ввод с клавиатуры и возвращает его. raw_input() в Python 2 ведет себя точно так же, как input() в Python 3, как описано выше.

Но в Python 2 также есть функция input() . В Python 2 функция input() считывает ввод с клавиатуры, анализирует и оценивает его как выражение Python и возвращает результирующее значение.

В Python 3 нет ни одной функции, которая делала бы то же самое, что и input() в Python 2. Вы можете имитировать эффект в Python 3 с помощью выражения eval(input()) . Однако это представляет собой угрозу безопасности, поскольку позволяет пользователям запускать произвольный, потенциально вредоносный код.

Для получения дополнительной информации о eval() и связанных с ним потенциальных угрозах безопасности ознакомьтесь с Python eval(): динамическое вычисление выражений.

С помощью input() вы можете собирать данные от своих пользователей. Но что, если вы хотите показать им какие-либо результаты, рассчитанные вашей программой? Далее вы узнаете, как отображать выходные данные для пользователей в консоли.

Запись вывода в консоль

Помимо получения данных от пользователя, программа также обычно должна предоставлять данные обратно пользователю. Вы можете отображать данные программы на консоли в Python с помощью print() .

Чтобы отобразить объекты на консоли, передайте их в виде списка аргументов, разделенных запятыми, функции print() .

print( , . )

Отображает строковое представление каждого из них на консоль. (Документация)

По умолчанию print() разделяет объекты одним пробелом и добавляет новую строку в конец вывода:

Вы можете указать любой тип объекта в качестве аргумента для print() . Если объект не является строкой, функция print() преобразует его в соответствующее строковое представление перед отображением:

Как видите, даже сложные типы, такие как списки, словари и функции, могут отображаться в консоли с помощью print() .

Печать с расширенными функциями

print() принимает несколько дополнительных аргументов, обеспечивающих скромный контроль над форматом вывода. Каждый из них представляет собой особый тип аргумента, называемый аргументом ключевого слова. Позже в этой вводной серии вы встретите руководство по функциям и передаче параметров, чтобы вы могли больше узнать об аргументах ключевых слов.

А пока вот что вам нужно знать:

  • Аргументы ключевых слов имеют форму = .
  • Любые ключевые аргументы, передаваемые функции print(), должны стоять в конце после списка отображаемых объектов.

В следующих разделах вы увидите, как эти ключевые аргументы влияют на вывод консоли, создаваемый функцией print() .

Разделение печатаемых значений

Добавление ключевого аргумента sep= приводит к тому, что Python разделяет объекты с помощью одинарного пробела, а не по умолчанию:

Чтобы сжать объекты вместе без пробела между ними, укажите пустую строку ("") в качестве разделителя:

Вы можете использовать ключевое слово sep, чтобы указать любую произвольную строку в качестве разделителя.

Управление символом новой строки

Аргумент ключевого слова end= приводит к завершению вывода вместо символа новой строки по умолчанию:

Например, если вы отображаете значения в цикле, вы можете использовать end, чтобы значения отображались в одной строке, а не в отдельных строках:

Вы можете использовать ключевое слово end, чтобы указать любую строку в качестве ограничителя вывода.

Отправка вывода в поток

print() принимает два дополнительных аргумента ключевого слова, оба из которых влияют на то, как функция обрабатывает поток вывода:

file= : по умолчанию print() отправляет свой вывод в поток по умолчанию с именем sys.stdout , который обычно эквивалентен консоли. Аргумент file= заставляет print() отправлять вывод в альтернативный поток, указанный вместо этого.

flush=True: обычно print() буферизует свой вывод и периодически записывает в выходной поток. flush=True указывает, что Python принудительно очищает поток вывода при каждом вызове функции print() .

Эти два аргумента ключевых слов представлены здесь для полноты картины. На этом этапе обучения вам, вероятно, не нужно слишком беспокоиться о потоках вывода.

Использование форматированных строк

Хотя вы можете углубиться в изучение функции Python print(), форматирование вывода консоли, которое она предоставляет, в лучшем случае находится в зачаточном состоянии. Вы можете выбрать способ разделения печатных объектов и указать, что будет в конце печатной строки. Вот и все.

Во многих случаях вам потребуется более точный контроль над внешним видом данных, предназначенных для отображения. Python предоставляет несколько способов форматирования выходных строковых данных. В этом разделе вы увидите пример использования f-строк Python для форматирования строк.

Примечание. Синтаксис f-строки — это один из современных способов форматирования строк. Для углубленного обсуждения вы можете ознакомиться с этими руководствами:

Вы также получите более подробный обзор двух подходов к форматированию строк, f-strings и str.format() , в руководстве по выводу форматированных строк в Python, которое следует за этим руководством в этой вводной серии.

В этом разделе вы будете использовать f-строки для форматирования вывода. Предположим, вы написали код, запрашивающий у пользователя имя и возраст:

Вы успешно собрали данные от своего пользователя, и вы также можете отобразить их на их консоли. Чтобы создать красиво отформатированное выходное сообщение, вы можете использовать синтаксис f-строки:

f-строки позволяют заключать имена переменных в фигурные скобки ( <> ), чтобы вставлять их значения в создаваемую строку. Все, что вам нужно сделать, это добавить букву f или F в начало вашей строки.

Далее предположим, что вы хотите сообщить пользователю, сколько ему будет лет через 50 лет. F-строки Python позволяют вам сделать это без особых накладных расходов! Вы можете добавить любое выражение Python между фигурными скобками, и Python сначала вычислит его значение, а затем вставит его в вашу f-строку:

Вы добавили 50 к значению возраста, которое вы получили от пользователя и преобразовали в целое число с помощью int() ранее. Весь расчет происходил внутри второй пары фигурных скобок в вашей f-строке. Довольно круто!

Примечание. Если вы хотите узнать больше об использовании этого удобного метода форматирования строк, вы можете углубиться в руководство по f-строкам Python 3.

F-строки Python, возможно, являются наиболее удобным способом форматирования строк в Python. Если вы хотите учиться только одним способом, лучше всего придерживаться f-строк Python. Однако этот синтаксис доступен только начиная с Python 3.6, поэтому, если вам нужно работать с более старыми версиями Python, вам придется использовать другой синтаксис, например, метод str.format() или строковый оператор по модулю.

Ввод и вывод Python: заключение

В этом руководстве вы узнали о вводе и выводе в Python и о том, как ваша программа Python может взаимодействовать с пользователем. Вы также изучили некоторые аргументы, с которыми можно работать, чтобы добавить сообщение в приглашение ввода или настроить, как Python отображает вывод для ваших пользователей.

Вы научились:

  • Принимать пользовательский ввод с клавиатуры с помощью встроенной функции input()
  • Отображение вывода на консоль с помощью встроенной функции print()
  • Форматировать строковые данные с помощью f-строк Python

В следующем учебном пособии этой вводной серии вы узнаете о еще одном методе форматирования строк и глубже погрузитесь в использование f-строк.

Смотреть сейчас Это руководство содержит связанный с ним видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным учебным пособием, чтобы углубить свое понимание: Чтение входных данных и Написание выходных данных в Python

Раз в несколько дней получайте короткие и интересные трюки с Python. Никакого спама никогда. Отписаться в любое время. Куратор: команда Real Python.

О Джоне Стурце

Джон — заядлый питонист и член учебной группы Real Python.

Читайте также: