Python 13.6 : Swapper deux éléments d’une liste
Nous continuons notre projet questionnaire en Python en ajoutant deux nouvelles questions à la liste : la capitale de la Belgique (Bruxelles) et la capitale de l'Allemagne (Berlin). L'objectif de cette session est d'aller plus loin en structurant le code autour d'une vraie notion de questionnaire, c'est-à-dire un ensemble de questions traitées de manière unifiée.
Une fonction lancer_questionnaire
Plutôt que d'appeler chaque question l'une après l'autre, nous créons une liste questionnaire qui contient toutes les questions, puis nous écrivons une fonction lancer_questionnaire qui prend cette liste en paramètre et itère dessus. Cette approche rend le code beaucoup plus modulaire et permet d'ajouter facilement de nouvelles questions :
def lancer_questionnaire(questionnaire):
score = 0
for question in questionnaire:
if poser_question(question):
score += 1
print(f"Score final {score} sur {len(questionnaire)}")
questionnaire = [question_1, question_2, question_3, question_4]
lancer_questionnaire(questionnaire)
La fonction poser_question retourne maintenant un booléen : True si la réponse de l'utilisateur est correcte, False sinon. Cela permet à lancer_questionnaire d'incrémenter le score uniquement quand la réponse est juste. À la fin, on affiche le score sous la forme « 3 sur 4 », ce qui est plus parlant que d'afficher seulement le nombre brut de bonnes réponses.
Les bonnes pratiques mises en œuvre ici :
- Séparer la définition des données (questions) du code de traitement
- Encapsuler la logique métier dans des fonctions dédiées
- Retourner un booléen explicite plutôt que manipuler des variables globales
- Calculer dynamiquement le total avec len() pour rester évolutif
- Afficher un résultat lisible et compréhensible par l'utilisateur
Pour bien programmer, il faut toujours penser à plusieurs paramètres : avoir une bonne structure, séparer la partie données et la partie code, et faciliter les modifications futures. C'est tout pour cette vidéo, on se dit à très bientôt pour une nouvelle section sur la programmation orientée objet.