Menu
Coddy logo textTech

Чтение ввода через readline()

Часть раздела Основы путешествия по R на Coddy — урок 29 из 78.

До сих пор вы учились выводить данные. Теперь пришло время сделать ваши программы интерактивными, считывая ввод от пользователя. Функция readline() позволяет вам захватывать то, что вводит пользователь.

name <- readline()
cat("Hello,", name, "\n")

Когда этот код выполняется, R ожидает, пока пользователь что-нибудь введет и нажмет Enter. Все, что он введет, сохраняется в переменной name. Если пользователь введет "Alice", результатом будет: Hello, Alice

Важно знать одну вещь: readline() всегда возвращает строку символов, даже если пользователь вводит число. Если кто-то вводит "25", это сохраняется как текст "25", а не число 25. Вы узнаете, как преобразовывать типы, в следующем уроке.

Вы можете прочитать несколько входных данных, используя readline() несколько раз:

first <- readline()
second <- readline()
cat("First:", first, "\n")
cat("Second:", second, "\n")

Каждый вызов readline() ожидает отдельную строку ввода от пользователя.

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

city <- readline()
cat(paste0("Welcome to ", city, "!"), "\n")

Здесь paste0() создает строку Welcome to Paris! без лишних пробелов перед !, а затем cat() выводит её.

challenge icon

Задание

Легко

Прочитайте две строки ввода и выведите персонализированное приветственное сообщение.

Вы получите два входных значения:

  1. Имя
  2. Название города

Прочитайте оба входных значения с помощью readline() и выведите сообщение в следующем формате:

Welcome, [name] from [city]!

Используйте cat() для вывода результата. Обязательно добавьте восклицательный знак в конце и символ новой строки \n.

Например, если на вход подаются Emma и Paris, вывод должен быть следующим:

Welcome, Emma from Paris!

Шпаргалка

Для чтения пользовательского ввода используйте функцию readline():

name <- readline()
cat("Hello,", name, "\n")

Функция readline() ожидает, пока пользователь что-нибудь введет и нажмет Enter. Ввод сохраняется как символьная строка.

Чтобы прочитать несколько значений, используйте readline() несколько раз:

first <- readline()
second <- readline()
cat("First:", first, "\n")
cat("Second:", second, "\n")

Примечание: readline() всегда возвращает символьную строку, даже если пользователь вводит число.

Используйте cat() для вывода значений, разделенных пробелами. Используйте paste0() для объединения значений без пробелов между ними:

name <- readline()
cat(paste0("Hello, ", name, "!"))

В этом примере paste0() объединяет "Hello, ", значение, хранящееся в name, и "!" в одну строку без лишних пробелов.

Попробуйте сами

# Чтение входных данных
con <- file("stdin", "r")
name <- suppressWarnings(readLines(con, n = 1))
city <- suppressWarnings(readLines(con, n = 1))

# TODO: Напишите ниже свой код для вывода приветственного сообщения
# Используйте cat() для вывода: Welcome, [name] from [city]!
# Не забудьте символ новой строки \n в конце
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы