Mini-projets Projet 4
Un quiz en console
Un petit jeu de questions en Python, découpé en plusieurs fichiers : les données, la boucle de jeu, puis des fonctions réutilisables.
À la fin de ce projet, tu sauras
- Ranger des données dans une liste de dictionnaires
- Écrire une boucle de jeu avec input, conditions et score
- Découper le programme en modules
Ce que tu vas construire
Un quiz qui pose des questions dans la console, compte les bonnes réponses et affiche un score. Le programme est découpé comme un vrai projet :
questions.py: les données (les questions et leurs réponses) ;outils.py: des fonctions réutilisables ;main.py: le programme qui fait jouer.
Séparer les données du code permet d'ajouter des questions sans toucher au jeu.
Les cours utilisés
- Python : premiers pas (input, f-strings) ;
- conditions et boucles ;
- listes, dictionnaires, fonctions et modules.
Astuce : dans les exercices, les réponses du joueur sont simulées (elles sont indiquées dans chaque consigne). Chez toi, lance python main.py et réponds au clavier.
À retenir
- Séparer les données (
questions.py), les outils (outils.py) et le programme (main.py). - Une liste de dictionnaires décrit des éléments qui ont tous les mêmes champs.
- Une boucle de jeu : poser, comparer, compter, puis afficher le score.
.strip().lower()rend une comparaison tolérante aux espaces et aux majuscules.
Voir la fiche de révision de cette leçon (à imprimer ou à relire avant un contrôle)
Étape 1 · Les questions
Facile ✓ RéussiDans questions.py, crée une liste QUESTIONS de trois dictionnaires, chacun avec une clé "question" et une clé "reponse" :
- « Quelle est la capitale de la France ? » →
Paris; - « Combien font 2 + 2 ? » →
4; - « Python est-il un langage compilé (oui/non) ? » →
non.
main.py est déjà écrit : il affiche le nombre de questions et la première.
Clique sur ▶ Exécuter (ou Ctrl + Entrée) pour lancer ton programme.
Entrées du programme (ce que l'utilisateur tape au clavier)
Consignes à réussir
- À faire : QUESTIONS est une liste
- À faire : Chaque élément a les clés "question" et "reponse"
- À faire : Le programme affiche « 3 questions » puis la première ▶ vérifié quand tu exécutes
Bravo, cet exercice est réussi !
- Indice 1 : Un dictionnaire :
{"question": "Combien font 2 + 2 ?", "reponse": "4"}. - Indice 2 : La liste :
QUESTIONS = [ {…}, {…}, {…} ], avec une virgule entre les dictionnaires. - Indice 3 : La réponse
4est un texte entre guillemets :input()renverra aussi un texte.
Toujours bloqué ? Voir une solution
questions.py
QUESTIONS = [
{"question": "Quelle est la capitale de la France ?", "reponse": "Paris"},
{"question": "Combien font 2 + 2 ?", "reponse": "4"},
{"question": "Python est-il un langage compilé (oui/non) ?", "reponse": "non"},
] Étape 2 · La boucle de jeu
Moyen ✓ RéussiDans main.py, pour chaque question de questions.QUESTIONS :
- pose la question avec
input; - si la réponse est exactement la bonne, affiche
Bonne réponse !et ajoute 1 àscore; - sinon, affiche
Raté, c'était …avec la bonne réponse.
À la fin, affiche Score : 2/3. Le joueur répond Paris, 4, puis Non (avec une majuscule : pour l'instant, c'est compté faux).
Clique sur ▶ Exécuter (ou Ctrl + Entrée) pour lancer ton programme.
Entrées du programme (ce que l'utilisateur tape au clavier)
Consignes à réussir
- À faire : Une boucle for parcourt questions.QUESTIONS
- À faire : La réponse est lue avec input
- À faire : score augmente quand c'est juste
- À faire : Deux bonnes réponses puis un raté ▶ vérifié quand tu exécutes
- À faire : Le score final est 2/3 ▶ vérifié quand tu exécutes
Bravo, cet exercice est réussi !
- Indice 1 :
for q in questions.QUESTIONS:—qest un dictionnaire :q["question"],q["reponse"]. - Indice 2 : Dans la boucle :
reponse = input(q["question"] + " ")puisif reponse == q["reponse"]:…else:… - Indice 3 : Après la boucle (non décalé) :
print(f"Score : {score}/{len(questions.QUESTIONS)}"). Dans une f-string entre guillemets doubles, écrisq['reponse']avec des apostrophes.
Toujours bloqué ? Voir une solution
main.py
import questions
score = 0
for q in questions.QUESTIONS:
reponse = input(q["question"] + " ")
if reponse == q["reponse"]:
print("Bonne réponse !")
score += 1
else:
print(f"Raté, c'était {q['reponse']}")
print(f"Score : {score}/{len(questions.QUESTIONS)}") Étape 3 · Un module d'outils
Pour aller plus loin ✓ Réussi« Non » et « non » devraient compter pareil. Crée dans outils.py :
verifier(reponse, attendue)qui renvoieTruesi les deux sont égales en ignorant les majuscules et les espaces autour (.strip().lower()) ;commentaire(score, total)qui renvoieParfait !si tout est juste,Pas mal !si au moins la moitié est juste,Révise encore un peu.sinon.
Puis, dans main.py, importe outils, utilise outils.verifier à la place du ==, et affiche le commentaire après le score. Avec les réponses Paris, 4 , Non, le programme doit afficher Score : 3/3 puis Parfait !.
Clique sur ▶ Exécuter (ou Ctrl + Entrée) pour lancer ton programme.
Entrées du programme (ce que l'utilisateur tape au clavier)
Consignes à réussir
- À faire : outils.py définit verifier(reponse, attendue)
- À faire : verifier utilise strip() et lower()
- À faire : outils.py définit commentaire(score, total)
- À faire : main.py importe outils et utilise verifier
- À faire : Le score est 3/3 puis « Parfait ! » ▶ vérifié quand tu exécutes
Bravo, cet exercice est réussi !
- Indice 1 :
def verifier(reponse, attendue):→return reponse.strip().lower() == attendue.strip().lower(). - Indice 2 :
commentaire:if score == total: return "Parfait !", puisif score * 2 >= total: return "Pas mal !", puisreturn "Révise encore un peu." - Indice 3 : Dans
main.py:import outils,if outils.verifier(reponse, q["reponse"]):, et à la finprint(outils.commentaire(score, len(questions.QUESTIONS))).
Toujours bloqué ? Voir une solution
main.py
import questions
import outils
score = 0
for q in questions.QUESTIONS:
reponse = input(q["question"] + " ")
if outils.verifier(reponse, q["reponse"]):
print("Bonne réponse !")
score += 1
else:
print(f"Raté, c'était {q['reponse']}")
total = len(questions.QUESTIONS)
print(f"Score : {score}/{total}")
print(outils.commentaire(score, total)) outils.py
def verifier(reponse, attendue):
return reponse.strip().lower() == attendue.strip().lower()
def commentaire(score, total):
if score == total:
return "Parfait !"
if score * 2 >= total:
return "Pas mal !"
return "Révise encore un peu." Défi réussi !
Ton badge Mini-projets passe en or dès que toutes les leçons du cours sont terminées. Retrouve tes badges sur la page d'accueil.