Großzügige Bewertung
Teil des Abschnitts Logik & Ablauf der Swift-Journey von Coddy. Lektion 51 von 56.
Strenge Gleichheit ist streng. In echten Quizzen gelten paris, Paris und PARIS als dieselbe Antwort.
Das Rezept aus Kapitel 1: Leerzeichen entfernen, beide Seiten in Kleinbuchstaben 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
}Das ist die Art von Hilfsfunktion, die es wert ist, in eine eigene Funktion ausgelagert zu werden. Die Quizschleife ist übersichtlicher, wenn für jede Frage eine eigene Zeile steht, und die morgige Fehlerbehebung findet an einer Stelle 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 Umwandlung beider Seiten in Kleinbuchstaben übereinstimmen.
Beginne dein Programm mit diesem Fragenkatalog questions, demselben wie im vorherigen Schritt:
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]Lies drei Zeilen von stdin ein. Gib für jede Frage Folgendes aus:
- Den Fragetext
correctoderwrong, je nach dem großzügigen Vergleich
Gib nach der Ausführung Score: <n>/3 aus.
Bei der Eingabe 4 / PARIS / Green lautet die Ausgabe:
2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3Probier 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 und Vergleich in Kleinbuchstaben
// dann in einer Schleife die Frage ausgeben, die Antwort einlesen und richtig/falsch ausgeben;
// mit 'Score: <n>/3' abschließen
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