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

Обновлено: 24.11.2024

Получите пользовательский ввод с помощью 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 (и новее).

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

Видео: Получение пользовательского ввода в программировании на C

Вывод С

В программировании на C printf() является одной из основных функций вывода. Функция отправляет форматированный вывод на экран. Например,

Пример 1: вывод C

Вывод

Как работает эта программа?

Пример 2: целочисленный вывод

Вывод

Мы используем спецификатор формата %d для печати типов int. Здесь %d внутри кавычек будет заменено значением testInteger .

Пример 3: float и двойной вывод

Вывод

Для печати числа с плавающей запятой мы используем спецификатор формата %f. Точно так же мы используем %lf для вывода двойных значений.

Пример 4. Печатные символы

Вывод

Для печати char мы используем спецификатор формата %c.

Ввод С

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

Пример 5: целочисленный ввод/вывод

Вывод

Здесь мы использовали спецификатор формата %d внутри функции scanf(), чтобы получить ввод данных от пользователя. Когда пользователь вводит целое число, оно сохраняется в переменной testInteger.

Обратите внимание, что мы использовали &testInteger внутри функции scanf(). Это связано с тем, что &testInteger получает адрес testInteger , и значение, введенное пользователем, сохраняется по этому адресу.

Пример 6: число с плавающей запятой и двойной ввод/вывод

Вывод

Мы используем спецификаторы формата %f и %lf для float и double соответственно.

Пример 7: символьный ввод-вывод C

Вывод

Когда пользователь вводит символ в вышеуказанной программе, сам символ не сохраняется. Вместо этого сохраняется целочисленное значение (значение ASCII).

И когда мы отображаем это значение в текстовом формате %c, отображается введенный символ. Если мы используем %d для отображения символа, печатается его значение ASCII.

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

Простейшее приложение scanf выглядит так:

Программа считывает целочисленное значение, которое пользователь вводит с клавиатуры (%d предназначен для целых чисел, как и printf, поэтому b должно быть объявлено как int) и помещает это значение в b.

Функция scanf использует те же заполнители, что и printf:

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

В общем, лучше всего использовать scanf, как показано здесь, — для чтения одного значения с клавиатуры. Используйте несколько вызовов scanf для чтения нескольких значений. В любой реальной программе вы будете использовать функции gets или fgets вместо того, чтобы читать текст построчно.Затем вы «разберете» строку, чтобы прочитать ее значения. Причина, по которой вы это делаете, заключается в том, что вы можете обнаруживать ошибки во входных данных и обрабатывать их по своему усмотрению.

Для полного понимания функций printf и scanf потребуется немного практики, но после освоения они становятся чрезвычайно полезными.

Попробуйте!

Измените эту программу, чтобы она принимала три значения вместо двух и складывала все три вместе:

Вы также можете удалить переменную b в первой строке приведенной выше программы и посмотреть, что делает компилятор, когда вы забываете объявить переменную. Удалите точку с запятой и посмотрите, что произойдет. Опустите одну из фигурных скобок. Удалите одну из скобок рядом с основной функцией. Сделайте каждую ошибку отдельно, а затем запустите программу через компилятор, чтобы посмотреть, что произойдет. Имитируя такие ошибки, вы можете узнать о различных ошибках компилятора, и это облегчит поиск ваших опечаток, когда вы сделаете их на самом деле.

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

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

Мы загружаем информацию в компьютер, сообщаем компьютеру, что с ней делать, а затем получаем результат. Информация, которую мы вводим в компьютер, называется входом, а информация, которую мы получаем от компьютера, называется выходом. Ввод может поступать практически из любого места. Нажатия клавиш на клавиатуре, данные из интернет-соединения или звуковые волны, преобразованные в электрические сигналы, являются примерами ввода. Вывод также может принимать различные формы, такие как видео, воспроизводимое на мониторе, строка текста, отображаемая в терминале, или данные, которые мы сохраняем на жестком диске. Сбор входных данных и генерация выходных данных известны под общим термином ввод/вывод или сокращенно ввод-вывод и являются основной функцией компьютеров.

Интересно, что язык программирования C не имеет встроенных возможностей ввода-вывода. Однако он предоставляет нам внешнюю библиотеку, содержащую функции ввода-вывода, которые мы можем скомпилировать и связать с нашими программами. Мы уже использовали функцию библиотеки вывода в Hello, World! пример в начале этого текста: printf() . Вы можете вспомнить, что эта функция находилась в библиотечном файле stdio.h. Как следует из названия этого файла, stdio.h содержит стандартизированные функции ввода/вывода для добавления возможностей ввода и вывода в наши программы. В этом разделе текста будут рассмотрены некоторые из этих функций.

Содержание

Вывод с помощью printf() [ edit | изменить источник ]

Вспомните из начала этого текста демонстрационную программу, продублированную ниже:

Если вы скомпилируете и запустите эту программу, вы увидите на экране следующее предложение:

Это удивительное достижение было достигнуто с помощью функции printf() . Функция подобна «черному ящику», который делает что-то для вас, не раскрывая внутренности. Мы можем сами писать функции на C, но об этом позже.

Вы видели, что для использования printf() нужно поместить текст, заключенный в кавычки, между круглыми скобками. Мы называем текст, заключенный в кавычки, литеральной строкой (или просто строкой), и мы называем эту строку аргументом для printf.

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

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

И как только он будет содержаться в соответствующей функции main(), он покажет:

Вывод чисел и управляющих последовательностей [ edit | изменить источник ]

Коды-заполнители [ редактировать | изменить источник ]

Функция printf() — мощная функция, и, вероятно, наиболее часто используемая функция в программах на C.

Например, давайте рассмотрим проблему. Допустим, мы хотим вычислить: 19 + 31. Давайте воспользуемся C, чтобы получить ответ.

Мы начинаем писать

Но здесь мы застряли! printf() печатает только строки! К счастью, в printf есть методы для вывода чисел. Что мы делаем, так это помещаем код формата placeholder в строку. Пишем:

Заполнитель %d буквально "удерживает место" фактического числа, которое является результатом прибавления 19 к 31.

  • %d – целое число (то же, что и %i)
  • %ld — длинное целое (то же, что и %li)
  • %f — с плавающей запятой
  • %lf , %g — двойной [1]
  • %c – символ
  • %s – строка
  • %x — шестнадцатеричное число

Полный список всех спецификаторов формата для printf() есть в Википедии.

Табуляции и новые строки [ edit | изменить источник ]

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

printf() не будет вставлять разрывы строк в конце каждого оператора: мы должны сделать это сами. Но как?

Что мы можем сделать, так это использовать экранирующий символ новой строки. Экранирующий символ — это специальный символ, который мы можем написать, но который будет делать что-то особенное на экране, например издавать звуковой сигнал, писать табуляцию и т. д. Чтобы написать новую строку, мы пишем \n . Все escape-символы начинаются с обратной косой черты.

Поэтому, чтобы добиться результатов выше, мы пишем

или, чтобы быть немного понятнее, мы можем разбить этот длинный оператор printf на несколько строк. Итак, наша программа будет

Есть и другие escape-символы, которые мы можем использовать. Другой распространенный способ — использовать \t для записи табуляции. Вы можете использовать \a для звонка в компьютерный звонок, но вы не должны часто использовать это в своих программах, так как чрезмерное использование звука не очень удобно для пользователя.

Другие методы вывода [ edit | изменить источник ]

помещает() [ редактировать | изменить источник ]

Функция puts() — это очень простой способ отправить строку на экран, когда у вас нет заполнителей или переменных, о которых нужно беспокоиться. Она работает очень похоже на функцию printf(), которую мы видели в «Hello, World!». пример:

будет печатать на экране:

, за которым следует символ новой строки (как обсуждалось выше). (Функция puts добавляет к выходным данным символ новой строки.)

Ввод с помощью scanf() [ edit | изменить источник ]

Функция scanf() — это метод ввода, эквивалентный функции вывода printf() — простой, но мощный. В самом простом вызове строка формата scanf содержит единственный заполнитель, представляющий тип значения, которое будет введено пользователем. Эти заполнители в основном такие же, как функция printf() — %d для целых чисел, %f для чисел с плавающей запятой и %lf для двойных чисел.

Однако есть одно отличие scanf() от printf() . Функция scanf() требует адрес памяти переменной, в которую вы хотите сохранить входное значение. Хотя здесь можно использовать указатели (переменные, хранящие адреса памяти), эта концепция будет рассмотрена позже в тексте. Вместо этого простой метод заключается в использовании оператора address-of &. На данный момент, возможно, лучше рассмотреть эту «магию», прежде чем мы обсудим указатели.

Типичное приложение может быть таким:

Если бы вы описали действие вызова функции scanf() выше, это могло бы звучать так: "Читать целое число от пользователя и сохранять его по адресу переменной a".

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

Правильное использование:

Это связано с тем, что всякий раз, когда вы используете спецификатор формата для строки ( %s ), переменная, которую вы используете для хранения значения, будет массивом, а сами имена массивов (в данном случае - a) указывают на их базовый адрес и, следовательно, адрес оператора не требуется.

Обратите внимание, что использование функции scanf() для сбора ввода с клавиатуры от пользователя может сделать ваш код уязвимым для проблем с переполнением буфера и привести к другому нежелательному поведению, если вы не будете очень осторожны. Рассмотрите возможность использования fgets() вместо scanf() .

Примечание о вводе: когда данные вводятся с клавиатуры, информация не поступает прямо в запущенную программу. Сначала он сохраняется в так называемом буфере — небольшом объеме памяти, зарезервированном для источника ввода. Иногда в буфере остаются данные, когда программа хочет прочитать из источника ввода, и функция scanf() будет читать эти данные вместо того, чтобы ждать, пока пользователь что-то введет. Некоторые могут предложить вам использовать функцию fflush(stdin) , которая может работать на некоторых компьютерах, но не считается хорошей практикой, как вы увидите позже. Это имеет тот недостаток, что если вы перенесете свой код на другой компьютер с другим компилятором, ваш код может работать неправильно.

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