Чтение ввода через 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() выводит её.
Задание
ЛегкоПрочитайте две строки ввода и выведите персонализированное приветственное сообщение.
Вы получите два входных значения:
- Имя
- Название города
Прочитайте оба входных значения с помощью 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 в концеВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы (AND, OR)Логические операторы. Часть 2 (NOT)Повторение: простая логикаВекторизованная логика. Часть 1Векторизованная логика. Часть 27Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Векторы: продвинутый уровень
Срезы и индексация векторовЛогическая индексацияАрифметика и ресайклинг векторовОператор %in%2Переменные и типы данных
Числовой тип данныхЦелочисленный тип данныхСимвольный тип данныхЛогический тип данныхПроверка типов данныхПравила именованияПропущенные значения: NAИтоги — создание переменных5Принятие решений
Оператор ifКонструкция if - elseПовторение: Простой калькуляторВложенные конструкции if - else8Циклы
Цикл ForЦикл WhileBreakNext (Continue)Повторение: ФакториалГенерация последовательностей (seq, :)Вложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыЦелочисленное деление и остаток от деленияОператоры присваиванияПовторение: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод через printКоманда cat для выводаВывод с переменнымиЧтение ввода через readline()Основы преобразования типовПовторение — Калькулятор возрастаПовторение — Истина или ложь9Функции
Объявление функцииАргументы функцииВозвращаемые значенияПовторение — функция SigmaПовторение — функция валидацииЗначения параметров по умолчанию12Итерация по последовательностям
Итерация по элементам вектораИспользование seq_along()Итерация по символам (strsplit)Функции для работы со строками