Zusammenfassungsbericht
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy. Lektion 53 von 56.
Abschließende Funktion: Führen Sie statt einer Kategorie das gesamte Quiz durch und erstellen Sie am Ende eine Zusammenfassung pro Kategorie.
Du wirst dich gleichzeitig auf jedes Kapitel stützen: Tupel-Destrukturierung für die Iteration, großzügige Bewertung aus dem Kapitel über Zeichenketten, Wörterbücher mit Standardwerten beim Indexzugriff aus dem Kapitel über Wörterbücher und sortierte Iteration für eine deterministische Ausgabe.
Erstellen Sie die Zähler pro Kategorie als zwei parallele Dictionaries:
var totals: [String: Int] = [:]
var rights: [String: Int] = [:]Erhöhe totals[cat, default: 0] += 1 für jede Frage; erhöhe rights[cat, default: 0] nur bei einer richtigen Antwort. Gehe am Ende die Kategorien in alphabetischer Reihenfolge durch, um den Bericht auszugeben.
Aufgabe
MittelDerselbe Fragenkatalog mit sechs Fragen aus der vorherigen Lektion. Lies sechs Antworten von stdin ein, eine pro Zeile, in der gleichen Reihenfolge wie im Katalog. Verwende eine tolerante Bewertung.
Gib in dieser Reihenfolge Folgendes aus:
- Eine Zeile pro Kategorie, alphabetisch sortiert, im Format
<category>: <right>/<total> - Eine abschließende Zeile:
Total: <right>/<total>über den gesamten Durchlauf
Für die Eingabe 4 / 3.14 / Paris / Atlantic / green / WATER lautet die Ausgabe:
geo: 1/2
math: 2/2
science: 2/2
Total: 5/6Probier es selbst
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 Antworten lesen; milde Bewertung; Summen/korrekte Antworten pro Kategorie erstellen;
// sortierte Zusammenfassungszeilen + Gesamt ausgeben
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Kontrollfluss
1Strings im Detail
Zählen und IndizesGroß-/Kleinschreibung und TrimSuchen in StringsAufteilen und ZusammenfügenTeilstrings ersetzenRückblick – Benutzernamen prüfen4Mengen
Mengen erstellenVereinigung und SchnittmengeSubtraktion und symmetrische DifferenzTeilmenge und ObermengeWiederholung – Tag-Filter7Projekt – Gewohnheitstracker
ProjektübersichtAls erledigt markieren10Projekt – Quiz-Engine
ProjektübersichtFragen stellen2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteBereichsmethodenBereiche in SwitchRückblick – Kalender-Raster5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerketten von Map, Filter und ReduceRückblick – WortstatistikÜbe selbstständig: Swift-Playground