Menu
Coddy logo textTech

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

Часть раздела Логика и управление потоком путешествия по 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. Считайте три строки из 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

Шпаргалка

Нестрогое сравнение строк: удаление пробелов и приведение обеих сторон к нижнему регистру перед сравнением.

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

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

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

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

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

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