Получение пользовательского ввода
Часть раздела Основы путешествия по R на Coddy — урок 34 из 78.
Задание
ЛегкоВ предыдущем уроке вы создали приветственное сообщение для калькулятора разделения счета (Bill Split Calculator). Теперь добавьте функциональность для сбора пользовательского ввода для расчета счета.
После существующего приветственного сообщения прочитайте три значения, введенных пользователем:
- Общая сумма счета
- Процент чаевых (как целое число, например,
15для 15%) - Количество человек, разделяющих счет
В R-скриптах, которые выполняются неинтерактивно (как на этой платформе), ввод считывается из стандартного потока ввода. Для этого сначала откройте соединение с stdin с помощью file(), затем прочитайте каждую строку с помощью readLines() и закройте соединение по завершении:
con <- file("stdin", "r")
bill <- as.numeric(suppressWarnings(readLines(con, n = 1)))
tip_percent <- as.numeric(suppressWarnings(readLines(con, n = 1)))
people <- as.numeric(suppressWarnings(readLines(con, n = 1)))
close(con)Вот что делает каждая часть:
file("stdin", "r")— открывает стандартный поток ввода для чтения и сохраняет его вconreadLines(con, n = 1)— считывает ровно одну строку из этого соединенияsuppressWarnings(...)— подавляет безобидные предупреждения, которые появляются при чтении изstdinтаким способомas.numeric(...)— преобразует текстовый ввод в числоclose(con)— закрывает соединение после того, как все входные данные прочитаны
Сохраните три значения в переменных с именами bill, tip_percent и people.
После чтения входных данных выведите подтверждающее сообщение, показывающее, что было введено, в следующем формате:
Bill: $[bill]
Tip: [tip_percent]%
People: [people]Используйте cat() для всего вывода и включайте символы новой строки \n там, где это необходимо. Используйте sep = "" в каждом вызове cat(), чтобы избежать нежелательных пробелов.
Например, если входные данные — 120, 18 и 4, полный вывод должен быть таким:
Welcome to the Bill Split Calculator!
Let's split your bill fairly.
Bill: $120
Tip: 18%
People: 4Попробуйте сами
# TODO: Write your code below
# Use cat() to display the welcome message
# Remember to use \n for new lines
cat("Welcome to the Bill Split Calculator!\nLet's split your bill fairly.\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)Функции для работы со строками