Menu
CoddyTech

Мягкое оценивание

Часть раздела Логика и управление потоком путешествия по Swift на Coddy. Урок 51 из 56.

Строгое равенство слишком сурово. В настоящих викторинах ответы paris, Paris и PARIS принимаются как одинаковые.

Рецепт из главы 1: удалите пробельные символы, приведите обе стороны к нижнему регистру и сравните:

func grade(_ given: String, _ answer: String) -> Bool {
    let g = given.trimmingCharacters(in: .whitespaces).lowercased()
    let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
    return g == a
}

Такой вспомогательный код стоит вынести в отдельную функцию. Цикл викторины становится понятнее, когда на каждый вопрос приходится одна строка, а завтрашнее исправление ошибки нужно будет внести только в одном месте.

challenge icon

Задание

Легко

Определи функцию grade(_ given: String, _ answer: String) -> Bool, которая возвращает true, если две строки совпадают после удаления пробельных символов и преобразования обеих строк в нижний регистр.

Начни программу с этого набора questions, такого же, как на предыдущем шаге:

let questions: [(String, String, String)] = [
    ("math", "2 + 2?", "4"),
    ("geo", "Capital of France?", "Paris"),
    ("science", "Color of grass?", "green")
]

Считай три строки из stdin. Для каждого вопроса выведи:

  1. Текст вопроса
  2. correct или wrong в зависимости от сравнения с учетом допустимых различий

После выполнения выведи Score: <n>/3.

Для ввода 4 / PARIS / Green вывод будет таким:

2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3

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

let questions: [(String, String, String)] = [
    ("math", "2 + 2?", "4"),
    ("geo", "Capital of France?", "Paris"),
    ("science", "Color of grass?", "green")
]

// TODO: реализовать func grade(_:_:)->Bool со сравнением после удаления пробелов по краям и приведения к нижнему регистру
// затем в цикле выводить вопрос, считывать ответ и сообщать, правильный он или нет;
// закончить строкой 'Score: <n>/3'
quiz iconПроверьте себя

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

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Песочница Swift