Fragen stellen
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy. Lektion 50 von 56.
Das erste Feature: Jede Frage der Reihe nach stellen und ausgeben, ob jede Antwort richtig war.
Der Fragenkatalog ist für diese Lektion fest im Code hinterlegt, die Antworten des Spielers kommen von stdin (eine pro Zeile, der Reihe nach).
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris")
]
for (_, text, answer) in questions {
print(text)
let given = readLine()!
print(given == answer ? "correct" : "wrong")
}Von oben nach unten lesen: die Frage ausgeben, eine Zeile einlesen, vergleichen. Die nächste Lektion lockert diesen strengen Vergleich auf, damit er nicht an Groß- und Kleinschreibung oder überflüssigen Leerzeichen scheitert.
Aufgabe
EinfachDie questions-Datenbank ist vorgegeben. Lies drei Zeilen von stdin (die Antworten des Spielers in der richtigen Reihenfolge). Gib für jede Frage Folgendes aus:
- Den Fragetext in einer eigenen Zeile
correct, wenn die eingegebene Antwort exakt mit der gespeicherten Antwort übereinstimmt, andernfallswrong
Gib nach allen drei Fragen Score: <n>/3 mit der Anzahl der korrekten Antworten aus.
Für die Eingabe 4 / Paris / red lautet die Ausgabe:
2 + 2?
correct
Capital of France?
correct
Color of grass?
wrong
Score: 2/3Probier es selbst
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]
// TODO: Für jede Frage den Text ausgeben, die Antwort lesen, richtig/falsch ausgeben;
// dann 'Score: <n>/3' 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