Итоговый отчет
Часть раздела Логика и управление потоком путешествия по Swift на Coddy. Урок 53 из 56.
Последняя функция: вместо одной категории запусти весь тест и в конце сформируй сводку по каждой категории.
Здесь тебе пригодятся сразу все главы: распаковка кортежа для перебора, нестрогая проверка из главы о строках, словари с подстановкой значения по умолчанию из главы о словарях, упорядоченный перебор для детерминированного вывода.
Создай счётчики для каждой категории в виде двух параллельных словарей:
var totals: [String: Int] = [:]
var rights: [String: Int] = [:]Увеличивай totals[cat, default: 0] += 1 для каждого вопроса; увеличивай rights[cat, default: 0] только при правильном ответе. В конце пройдись по категориям в алфавитном порядке и выведи отчёт.
Задание
СреднеНачните программу с этого банка из шести вопросов — того же, что и на предыдущем шаге:
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("math", "Value of pi to 2 decimals?", "3.14"),
("geo", "Capital of France?", "Paris"),
("geo", "Largest ocean?", "Pacific"),
("science", "Color of grass?", "green"),
("science", "H2O is?", "water")
]Считайте шесть ответов из stdin, по одному в строке, в том же порядке, что и в банке. Используйте лояльную проверку ответов.
Выведите в следующем порядке:
- По одной строке для каждой категории, отсортированные по алфавиту, в формате
<category>: <right>/<total> - Одну последнюю строку:
Total: <right>/<total>для всего запуска
Для входных данных 4 / 3.14 / Paris / Atlantic / green / WATER результат будет таким:
geo: 1/2
math: 2/2
science: 2/2
Total: 5/6Попробуйте сами
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("math", "Value of pi to 2 decimals?", "3.14"),
("geo", "Capital of France?", "Paris"),
("geo", "Largest ocean?", "Pacific"),
("science", "Color of grass?", "green"),
("science", "H2O is?", "water")
]
// TODO: прочитать 6 ответов; оценить ответы с учётом допустимых вариантов; подсчитать количество вопросов и правильных ответов по каждой категории;
// вывести строки сводки в отсортированном порядке + Total
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Строки в деталях
Подсчет и индексыРегистр и удаление пробеловПоиск в строкахРазделение и объединениеЗамена подстрокИтоги — Проверка имени пользователя4Множества
Создание множествОбъединение и пересечениеРазность и симметрическая разностьПодмножество и надмножествоИтоги — Фильтр тегов7Проект — Трекер привычек
Обзор проектаОтметить выполнение10Проект — Движок викторины
Обзор проектаЗадаем вопросы2Диапазоны и шаги
Закрытые и полуоткрытыеШагМетоды диапазоновДиапазоны в SwitchИтоги: Сетка календаряПотренируйтесь самостоятельно: Песочница Swift