Notation flexible
Fait partie de la section Logique et flux du Journey Swift de Coddy. Leçon 51 sur 56.
L’égalité stricte est impitoyable. Les vrais quiz acceptent paris, Paris et PARIS comme une seule et même réponse.
La recette du chapitre 1 : supprimer les espaces superflus, mettre les deux côtés en minuscules, 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 de fonction utilitaire qu’il vaut la peine d’extraire dans une fonction à part. La boucle du questionnaire est plus lisible avec une ligne par question, et la correction de bug de demain se fera à un seul endroit.
Défi
FacileDéfinis une fonction grade(_ given: String, _ answer: String) -> Bool qui renvoie true lorsque les deux chaînes correspondent après suppression des espaces blancs et conversion des deux côtés en minuscules.
Commence ton programme avec cette banque de questions questions, identique à celle de l’étape précédente :
let questions: [(String, String, String)] = [
("math", "2 + 2?", "4"),
("geo", "Capital of France?", "Paris"),
("science", "Color of grass?", "green")
]Lis trois lignes depuis l’entrée standard. Affiche, pour chaque question :
- Le texte de la question
correctouwrongselon la comparaison tolérante
Après l’exécution, affiche 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/3Essayez 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 suppression des espaces en début et en fin et comparaison en minuscules
// puis parcourir les questions, afficher la question, lire la réponse, afficher correct/incorrect ;
// terminer par '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 motsEntraînez-vous par vous-même : Playground Swift