Python 13.2 : Append, extend, et insert
Nous reprenons notre projet questionnaire vu précédemment avec les fonctions, et nous allons maintenant l'améliorer en utilisant les collections. Pour rappel, notre programme demandait des questions à l'utilisateur, comme la capitale de la France ou de l'Italie, puis affichait le score final. L'objectif ici est de mieux structurer les données pour faire évoluer plus facilement le programme.
Séparer les données du code
Le point clé que nous allons aborder est la séparation entre les données et le code. Quand les questions sont écrites en dur dans le programme, il devient impossible de les charger depuis un fichier ou un serveur web. C'est une mauvaise pratique qui rend le programme rigide et peu évolutif. La bonne approche consiste à modéliser une question avec un tuple contenant l'énoncé, les réponses possibles et la bonne réponse :
question_1 = (
"Quelle est la capitale de la France ?",
("Paris", "Lyon", "Marseille"),
"Paris"
)
Stocker directement le nom de la bonne réponse plutôt que son index évite les erreurs si l'ordre des réponses change. Cette approche reste simple et lisible. Une alternative serait de mettre dans le tuple un sous-tuple par réponse avec un booléen indiquant si elle est correcte, mais cela complique le code (deux niveaux d'index à gérer) et n'apporte rien sauf pour les questions à choix multiples avec cases à cocher.
Les bonnes pratiques de structuration :
- Stocker les données dans des structures dédiées (tuples, listes)
- Garder le code de traitement indépendant des données
- Pouvoir externaliser les données vers un fichier ou un service
- Référencer la bonne réponse par sa valeur, pas par son index
- Préparer le terrain pour un programme évolutif
Pour gérer plusieurs questions, nous allons maintenant créer une liste de questionnaires contenant tous nos tuples de questions, puis adapter la fonction poser_question pour qu'elle prenne un tuple en paramètre. Cette méthode nous permettra d'ajouter facilement de nouvelles questions sans toucher au code de traitement. On se retrouve pour un exercice sur le parcours de ces données structurées.