Python - 13.3 Adapter une fonction de question avec une liste

Dans cet exercice, la fonction de question ne reçoit plus plusieurs paramètres. Elle reçoit une seule liste qui contient le titre, les choix et la bonne réponse. Cette approche rend le code plus simple à faire évoluer.

Une seule liste pour toute la question

Au lieu de passer la question, les choix et la bonne réponse séparément, la fonction reçoit une seule liste. Le titre de la question se trouve à la position 0.

Les choix se lisent ensuite à partir de la position 1. La bonne réponse est aussi repérée par sa position dans la liste.

Comparer les réponses sans tenir compte de la casse

Dans la première version, « Paris » et « paris » étaient considérés comme différents. La comparaison échouait donc à cause d'une simple majuscule.

La solution consiste à convertir les deux textes en minuscules avec la méthode lower() avant de les comparer.

if reponse.lower() == bonne_reponse.lower():
    print('bonne réponse')
else:
    print('mauvaise réponse')

En résumé

Une seule liste peut contenir le titre, les choix et la bonne réponse d'une question. La fonction lit chaque élément grâce à sa position. La méthode lower() évite qu'une majuscule fasse échouer une bonne réponse.

Points clés

  • Une liste peut regrouper toutes les données d'une question.
  • Le titre se lit à la position 0 de la liste.
  • Les choix se récupèrent à partir de la position 1.
  • La méthode lower() ignore la différence entre majuscules et minuscules.
  • Il faut appliquer lower() aux deux textes comparés.

Questions fréquentes

Pourquoi ne passer qu'un seul paramètre à la fonction ?

Une seule liste simplifie l'appel de la fonction. Ajouter une question revient à changer la liste, et non la signature de la fonction.

Que fait exactement la méthode lower() ?

Elle convertit le texte en minuscules. Ainsi, Paris et paris deviennent identiques pour la comparaison.

Faut-il appliquer lower() à une seule des deux réponses ?

Non, il faut l'appliquer aux deux textes. Sinon la comparaison peut encore échouer selon la casse.