Python 13.6: Swap two elements of a list

Cette vidéo finalise le projet questionnaire en Python. On part de deux questions existantes auxquelles on en ajoute deux nouvelles : la capitale de la Belgique (Bruxelles) et celle de l'Allemagne (Berlin). Puis on regroupe l'ensemble dans une liste de questionnaires pour gérer plusieurs questions de manière unifiée.

Structurer la liste de questionnaires

Au lieu de quatre variables séparées (question1, question2, etc.), on crée une seule liste contenant tous les tuples de questions. Cela permet de les parcourir avec une boucle for et d'appeler la fonction poser_question pour chacune :

questionnaire = [
    ("Capitale de la France ?", ("Paris", "Lyon", "Marseille"), "Paris"),
    ("Capitale de l'Italie ?", ("Rome", "Milan", "Venise"), "Rome"),
    ("Capitale de la Belgique ?", ("Bruxelles", "Bruges", "Anvers"), "Bruxelles"),
    ("Capitale de l'Allemagne ?", ("Berlin", "Munich", "Hambourg"), "Berlin")
]

def lancer_questionnaire(questionnaire):
    score = 0
    for question in questionnaire:
        if poser_question(question):
            score += 1
    print(f"Score final : {score} / {len(questionnaire)}")

Gestion du score

Pour suivre le score, la fonction poser_question retourne un booléen indiquant si la réponse était correcte. La fonction lancer_questionnaire initialise un score à zéro, l'incrémente à chaque bonne réponse et affiche le résultat final au format "score / total" en utilisant len(questionnaire).

Quelques bonnes pratiques mises en œuvre dans ce projet :

  • Séparer les données (questionnaire) du code (fonctions) — clé pour l'évolutivité
  • Utiliser des tuples pour des structures immuables (une question ne change pas en cours de partie)
  • Une fonction = une responsabilité : poser une question, lancer le questionnaire, etc.
  • Retourner des valeurs plutôt que de modifier des variables globales
  • Afficher le score avec un format compréhensible utilisateur

Pour bien programmer, il faut toujours penser à la structure : séparer code et données, prévoir l'évolutivité, choisir les bons types de collections. La prochaine section abordera la programmation orientée objet, qui permettra de modéliser ces concepts (Question, Questionnaire, Score) avec encore plus de clarté et de réutilisabilité.