Menu
Coddy logo textTech

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.

challenge icon

Défi

Facile

Dé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 :

  1. Le texte de la question
  2. correct ou wrong selon 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/3

Aide-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'
quiz iconTestez-vous

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