Menu
Coddy logo textTech

Вложенные конструкции if - else

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

Иногда двух вариантов недостаточно. Что если вам нужно проверить несколько условий и обработать каждое из них по-разному? Вы можете поместить оператор if-else внутрь другого блока if или else, чтобы создать более сложные пути принятия решений.

score <- 85

if (score >= 90) {
  print("Grade: A")
} else {
  if (score >= 80) {
    print("Grade: B")
  } else {
    print("Grade: C or below")
  }
}

R сначала проверяет, является ли значение score 90 или выше. Поскольку 85 не соответствует этому условию, выполнение переходит к блоку else.

Внутри другой if проверяет, составляет ли score как минимум 80. Так как 85 проходит эту проверку, выводится "Grade: B".

R предоставляет более лаконичный способ записи этого с помощью else if:

score <- 85

if (score >= 90) {
  print("Grade: A")
} else if (score >= 80) {
  print("Grade: B")
} else {
  print("Grade: C or below")
}

Оба подхода работают одинаково, но else if делает ваш код более плоским и удобным для чтения. Вы можете объединять в цепочку столько блоков else if, сколько потребуется, и R выполнит только первый блок, условие которого истинно.

challenge icon

Задание

Легко

Создайте систему расчета стоимости билетов, используя вложенные операторы if-else или else if, чтобы определить цену билета в зависимости от возраста.

Вам предоставлена следующая переменная:

age <- 25

Напишите серию условий, чтобы определить и вывести цену билета на основе следующих правил:

  • Если возраст меньше 5, выведите "Free"
  • Если возраст от 5 до 12 лет (включительно), выведите "$5"
  • Если возраст от 13 до 17 лет (включительно), выведите "$8"
  • Если возраст от 18 до 64 лет (включительно), выведите "$12"
  • Если возраст 65 лет и старше, выведите "$7"

Используйте функцию print() для вывода результата.

Шпаргалка

Вы можете вкладывать операторы if-else друг в друга для проверки нескольких условий:

score <- 85

if (score >= 90) {
  print("Grade: A")
} else {
  if (score >= 80) {
    print("Grade: B")
  } else {
    print("Grade: C or below")
  }
}

Более чистый подход — использование else if для объединения нескольких условий в цепочку:

score <- 85

if (score >= 90) {
  print("Grade: A")
} else if (score >= 80) {
  print("Grade: B")
} else {
  print("Grade: C or below")
}

R оценивает условия по порядку и выполняет только первый блок, условие которого истинно. Вы можете объединять в цепочку столько блоков else if, сколько необходимо.

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

# Предоставленная переменная
age <- 25

# TODO: Напишите свой код ниже
# Используйте вложенные операторы if-else или else if, чтобы определить цену билета
# на основе предоставленных возрастных правил
quiz iconПроверьте себя

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

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