Zusammenfassungsbericht
Teil des Abschnitts Logik & Ablauf der Swift-Journey von Coddy. Lektion 53 von 56.
Letztes Feature: Führe statt nur einer Kategorie das gesamte Quiz aus und erstelle am Ende eine Zusammenfassung für jede Kategorie.
Du wirst dich auf alle Kapitel zugleich stützen: Tupel-Destrukturierung für die Iteration, großzügige Bewertung aus dem Kapitel über Zeichenketten, Dictionaries mit Standardwerten für den Indexzugriff aus dem Kapitel über Dictionaries und sortierte Iteration für eine deterministische Ausgabe.
Erstelle die Zähler für jede Kategorie als zwei parallele Wörterbücher:
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
MittelBeginne dein Programm mit dieser Bank aus sechs Fragen, derselben wie im vorherigen Schritt:
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")
]Lies sechs Antworten von stdin ein, eine pro Zeile, in derselben Reihenfolge wie in der Bank. Verwende eine tolerante Bewertung.
Gib Folgendes in dieser Reihenfolge aus:
- Eine Zeile pro Kategorie, alphabetisch sortiert, im Format
<category>: <right>/<total> - Eine abschließende Zeile:
Total: <right>/<total>für 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 einlesen; großzügig bewerten; Gesamtzahlen und richtige Antworten pro Kategorie ermitteln;
// sortierte Zusammenfassungszeilen + Total ausgeben
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
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