Kulante Bewertung
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy — Lektion 51 von 56.
Strikte Gleichheit ist streng. Echte Quiz akzeptieren paris, Paris und PARIS als dieselbe Antwort.
Das Rezept aus Kapitel 1: Leerzeichen entfernen, beide Seiten in Kleinschreibung umwandeln, vergleichen:
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}Dies ist die Art von Helfer, die es wert ist, in eine eigene Funktion ausgelagert zu werden. Die Quiz-Schleife liest sich sauberer mit einer Zeile pro Frage, und die Fehlerbehebung von morgen findet an einem einzigen Ort statt.
Aufgabe
EinfachDefiniere eine Funktion grade(_ given: String, _ answer: String) -> Bool, die true zurückgibt, wenn die beiden Zeichenfolgen nach dem Entfernen von Leerzeichen und der Kleinschreibung beider Seiten übereinstimmen.
Die questions-Datenbank ist vorgegeben. Lies drei Zeilen von stdin. Gib für jede Frage Folgendes aus:
- Den Fragetext
correctoderwrongbasierend auf dem toleranten Vergleich
Gib nach dem Durchlauf Score: <n>/3 aus.
Für die Eingabe 4 / PARIS / Green lautet die Ausgabe:
2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3Spickzettel
Toleranter String-Vergleich: Leerzeichen entfernen und beide Seiten vor dem Vergleich in Kleinschreibung umwandeln.
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}Probier es selbst
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]
// TODO: func grade(_:_:)->Bool mit trim + Kleinschreibung-Vergleich
// dann Schleife, Frage ausgeben, Antwort lesen, richtig/falsch ausgeben;
// abschließen mit 'Score: <n>/3'
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