Чтение ввода через 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() ожидает отдельную строку ввода от пользователя.
При объединении текста с переменными с помощью cat(), между элементами, разделенными запятой, ставится пробел. Иногда нужно объединить текст без пробелов — например, чтобы добавить знак препинания непосредственно к слову. В таких случаях полезна функция paste0(). Она объединяет строки без разделителя между ними:
city <- readline()
cat("Welcome to", paste0(city, "!"), "\n")Здесь paste0(city, "!") объединяет значение city и "!" без пробела, поэтому, если пользователь введет "Paris", результат будет: Welcome to Paris!
Задание
ЛегкоПрочитайте две строки ввода и выведите персонализированное приветственное сообщение.
Вы получите два входных значения:
- Имя
- Название города
Прочитайте оба входных значения с помощью readline() и выведите сообщение в следующем формате:
Welcome, [name] from [city]!Используйте cat() для вывода результата. Обязательно добавьте восклицательный знак в конце и символ новой строки \n.
Например, если на вход подаются Emma и Paris, результат должен быть следующим:
Welcome, Emma from Paris!Попробуйте сами
# Чтение входных данных
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)Функции для работы со строками