Raport podsumowujący
Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 53 z 56.
Ostatnia funkcja: zamiast jednej kategorii uruchom cały quiz i na końcu przygotuj podsumowanie dla każdej kategorii.
Jednocześnie wykorzystasz wiedzę z każdego rozdziału: destrukturyzację krotek do iteracji, łagodniejsze ocenianie ze rozdziału o ciągach znaków, słowniki z domyślnymi indeksami dolnymi z rozdziału o słownikach oraz sortowaną iterację, by uzyskać deterministyczne wyniki.
Zbuduj liczniki dla poszczególnych kategorii jako dwa równoległe słowniki:
var totals: [String: Int] = [:]
var rights: [String: Int] = [:]Zwiększaj totals[cat, default: 0] += 1 przy każdym pytaniu; zwiększaj rights[cat, default: 0] tylko przy poprawnej odpowiedzi. Na końcu przejdź przez kategorie w kolejności alfabetycznej i wydrukuj raport.
Wyzwanie
ŚredniTa sama baza sześciu pytań co w poprzedniej lekcji. Wczytaj sześć odpowiedzi ze standardowego wejścia, po jednej w wierszu, w tej samej kolejności co w bazie. Zastosuj łagodne ocenianie.
Wypisz w następującej kolejności:
- Jeden wiersz na kategorię, posortowane alfabetycznie, w formacie
<category>: <right>/<total> - Jeden ostatni wiersz:
Total: <right>/<total>dla całego przebiegu
Dla wejścia 4 / 3.14 / Paris / Atlantic / green / WATER wynikiem jest:
geo: 1/2
math: 2/2
science: 2/2
Total: 5/6Spróbuj swoich sił
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: odczytaj 6 odpowiedzi; oceniaj łagodnie; oblicz liczbę pytań i poprawnych odpowiedzi dla każdej kategorii;
// wypisz posortowane wiersze podsumowania + Total
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Dogłębnie o ciągach znaków
Liczba i indeksyWielkość liter i usuwanie białych znakówWyszukiwanie w ciągach znakówDzielenie i łączenieZastępowanie podciągówPodsumowanie — sprawdzanie nazwy użytkownika4Zbiory
Tworzenie zbiorówSuma i część wspólnaRóżnica i różnica symetrycznaPodzbiór i nadzbiórPowtórka — filtr tagów7Projekt – Śledzenie nawyków
Przegląd projektuOznacz jako wykonane10Projekt — silnik quizów
Przegląd projektuZadawanie pytań2Zakresy i kroki
Zakresy domknięte i półotwarteKrokMetody zakresówZakresy w instrukcji switchPowtórka — siatka kalendarza5Funkcje wyższego rzędu, część 1
MapFilterReduceŁączenie map, filter i reducePodsumowanie – statystyki słówPoćwicz samodzielnie: Edytor online Swift