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/3Spickzettel
Iterieren Sie über ein Tupel-Array von Fragen, lesen Sie Antworten von stdin ein und vergleichen Sie diese:
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris")
]
var score = 0
for (_, text, answer) in questions {
print(text)
let given = readLine()!
if given == answer {
print("correct")
score += 1
} else {
print("wrong")
}
}
print("Score: \(score)/\(questions.count)")Probier 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 TrimmenSuchen in StringsTeilen und ZusammenfügenTeilstrings ersetzenWiederholung – Benutzernamen-Check4Mengen
Mengen erstellenVereinigung und SchnittmengeDifferenz und symmetrische DifferenzTeilmenge und ObermengeRückblick – Tag-Filter7Projekt - Habit Tracker
ProjektübersichtAls erledigt markieren10Projekt – Quiz-Engine
ProjektübersichtFragen stellen2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteRange-MethodenRanges in SwitchRückblick – Kalender-Grid5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerkettung von map, filter, reduceRückblick – Wortstatistiken