Cours RechercherCtrl K

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.

45 min

À 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

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

Dans 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.

Console

Clique sur ▶ Exécuter (ou Ctrl + Entrée) pour lancer ton programme.

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
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

Dans main.py, pour chaque question de questions.QUESTIONS :

  1. pose la question avec input ;
  2. si la réponse est exactement la bonne, affiche Bonne réponse ! et ajoute 1 à score ;
  3. 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).

Console

Clique sur ▶ Exécuter (ou Ctrl + Entrée) pour lancer ton programme.

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
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

« Non » et « non » devraient compter pareil. Crée dans outils.py :

  • verifier(reponse, attendue) qui renvoie True si les deux sont égales en ignorant les majuscules et les espaces autour (.strip().lower()) ;
  • commentaire(score, total) qui renvoie Parfait ! 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 !.

Console

Clique sur ▶ Exécuter (ou Ctrl + Entrée) pour lancer ton programme.

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
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."