Notation flexible
Fait partie de la section Logique et Flux du Journey Swift de Coddy — leçon 51 sur 56.
L'égalité stricte est sévère. Les vrais quiz acceptent paris, Paris et PARIS comme étant la même réponse.
La recette du chapitre 1 : supprimer les espaces, mettre en minuscules des deux côtés, comparer :
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}C'est le genre d'assistant qu'il vaut la peine d'extraire dans sa propre fonction. La boucle du quiz est plus lisible avec une seule ligne par question, et la correction de bug de demain se fera en un seul endroit.
Défi
FacileDéfinissez une fonction grade(_ given: String, _ answer: String) -> Bool qui renvoie true lorsque les deux chaînes correspondent après avoir supprimé les espaces blancs et mis les deux côtés en minuscules.
La banque questions est fournie. Lisez trois lignes depuis stdin. Affichez, pour chaque question :
- Le texte de la question
correctouwrongselon la comparaison flexible
Après l'exécution, affichez Score: <n>/3.
Pour l'entrée 4 / PARIS / Green, la sortie est :
2 + 2?
correct
Capital of France?
correct
Color of grass?
correct
Score: 3/3Aide-mémoire
Comparaison de chaînes de caractères permissive : supprimer les espaces blancs et convertir les deux côtés en minuscules avant de comparer.
func grade(_ given: String, _ answer: String) -> Bool {
let g = given.trimmingCharacters(in: .whitespaces).lowercased()
let a = answer.trimmingCharacters(in: .whitespaces).lowercased()
return g == a
}Essayez vous-même
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]
// TODO: func grade(_:_:)->Bool avec trim + comparaison en minuscules
// ensuite boucle, afficher la question, lire la réponse, afficher correct/incorrect ;
// terminer avec 'Score: <n>/3'
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et Flux
1Les chaînes de caractères en profondeur
Comptage et indicesCasse et nettoyageRecherche dans les chaînesDécoupage et jointureRemplacement de sous-chaînesRécapitulatif - Vérification du nom d'utilisateur4Ensembles
Création d'ensemblesUnion et intersectionSoustraction et différence symétriqueSous-ensemble et sur-ensembleRécapitulatif - Filtre de tags7Projet - Suivi d'habitudes
Aperçu du projetMarquer comme terminé10Projet - Moteur de quiz
Présentation du projetPoser des questions2Intervalles et Pas
Fermé vs Semi-ouvertLe PasMéthodes d'intervalleIntervalles dans un SwitchRécapitulatif - Grille de calendrier5Fonctions d'ordre supérieur, Partie 1
MapFilterReduceChaînage de map, filter, reduceRécapitulatif - Statistiques de mots