Index de l'article

Présentation du principe

Créer un programme qui permet aux élèves de s'exercer et d'apprendre leurs tables de multiplication. 

En dessous une copie d'écran de l'affichage du script se trouvant à l'étape 5 - le graal, script qui fonctionne avec le temps. Pour les pressés, vous avez en PJ le fichier .py.

Pour apprendre les tables, voir ceci:



Etape 1

  • Testez le script
  • Comprenez le
  • Et commentez le avant de l'enregistrer...
# ceci est un script
from random import randint
a=randint(1,10)
b=randint(1,10)
print("a=",a)
print("b=",b)

 

Bilan:

Je sais créer des nombres aléatoires et les afficher


Etape 2

  • Complétez le script du dessus pour calculer a*b puis de demander à l'utilisateur de saisir dans une variable sa réponse
  • Ne trichez pas, la correction est juste en dessous
  • Et commentez le avant de l'enregistrer...
# ceci est un script
from random import randint
a=randint(1,10)
b=randint(1,10)
print("a=",a)
print("b=",b)
result= a*b
print("Donner le résultat de",a,"*",b)
rep=int(input("Saisir votre réponse : "))

Bilan:

Je sais créer des nombres aléatoires, les afficher, faire des calculs et demander à l'utilisateur de saisir un résultat


Etape 3

  • Avec un si, comparer la réponse de l'utilisateur avec le bon résultat
  • Proposez à l'utilisateur de jouer x fois
  • Ne trichez pas, la correction est en dessous
  • Et commentez le avant de l'enregistrer...
# ceci est un script
from random import randint
nbr=int(input("Combien de fois voulez-vous jouer : "))
for i in range(nbr): 
    a=randint(1,10)
    b=randint(1,10)
    print("a=",a)
    print("b=",b)
    result= a*b
    print("Donner le résultat de",a,"*",b)
    rep=int(input("Saisir votre réponse : "))
    if result==rep:
        print("   Bravo!")
    else:
        print("   Pas bravo!")

Bilan:

L'utilisateur peut commencer à jouer... Mais j'aimerai bien compter les bonnes réponses...


Etape 4

  • Comptez les bonnes réponses et calculer une note sur 20 (sortez votre brouillon et trouvez la note / 20 dans le cas ou vous avez 17 bonnes réponses sur un total de 23 tours ;)
  • Ne trichez pas, la correction est en dessous
  • Et pourquoi pas commentez le avant de l'enregistrer...
# ceci est un script
from random import randint
nbr=int(input("Combien de fois voulez-vous jouer : "))
bon=0
for i in range(nbr): 
    a=randint(1,10)
    b=randint(1,10)
    print("a=",a)
    print("b=",b)
    result= a*b
    print("Donner le résultat de",a,"*",b)
    rep=int(input("Saisir votre réponse : "))
    if result==rep:
        print("   Bravo!")
        bon=bon+1
    else:
        print("   Pas bravo!")
print("vous avez ",bon," bonnes réponses sur un total de ",nbr)
print("votre note est donc de ",bon/nbr*20,"/20")

Bilan:

L'utilisateur peut commencer à jouer... Mais en cas d'erreur de saisie, le programme plante


Etape 5

Alors voici deux scripts, celui de gauche demande à l'utilisateur de saisir un nombre d'essais - du genre 25 essais, et celui de droite demande à l'utilisateur de jouer un certain temps - du genre 3 minutes. Vous noterez aussi la présence du while True: qui permet de gérer les erreurs de saisie, car cela m'a énervé de voir le programme planter 2 secondes avant la fin du temps de jeu...

Jeux avec un nbre d'essais

from random import randint
#Déclaration des variables et affichage initial
x = 0 #Nombre de points
prenom=input("Votre prénom est ")
print("Vérifiez que le pavé numérique est activé!")
tour = int(input("Vous voulez jouer combien de fois: "))

# Boucle bornée

for i in range(tour): 
    a = randint(1,10) #Nombre aléatoire pour le calcul
    b = randint(1,10) #Nombre aléatoire pour le calcul
    print(a," * ",b," = ? ") #Affiche "a + b = ?"
    

# ----------------------------------------------------------------------------
    while True:  # Boucle infinie qui se répétera jusqu'à une saisie correcte

        try:
            d = int(input("Saisir le résultat: "))  # Demande au joueur de saisir sa réponse et conversion en entier
            break  # Sortir de la boucle si tout est correct
        except ValueError:
            print("Mauvais type de saisie, recommancez") # Si une erreur on redemande la saisie
# ----------------------------------------------------------------------------
    if d == a * b: #Calcule a * b et vérifie si la condition est bonne
        #Condition d (réponse) = a * b
        print ("Gagné, vous avez 1 point")
        x = x + 1
    else: #Condition d (réponse) ≠ a * b
        print("---------------------------Caramba, c'est raté!")
    print () #Retour à la ligne
       
print("Le jeu est terminé.")
#Affichage des scores
print () #Retour à la ligne
print ()
print ("Merci ",prenom)
print ("Jeu terminé, vous avez eu",x,"points en",i+1,"essais")
print ("Votre moyenne est donc de ",round(x/(i+1)*20,2),"/20")

Jeux avec une durée en minutes

import time
from random import randint
#Déclaration des variables et affichage initial
x = 0 #Nombre de points
i=0
prenom=input("Votre prénom est ")
print("Vérifiez que le pavé numérique est activé!")
duree = int(input("Saisir le nombre de minute(s): "))# Durée en secondes
duree=duree*60 # Durée transformé en seconde
# Heure de début
start_time = time.time()

# Boucle qui se termine après "duree en seconde"

while time.time() - start_time < duree:
    a = randint(1,10) #Nombre aléatoire pour le calcul
    b = randint(1,10) #Nombre aléatoire pour le calcul
    print(a," * ",b," = ? ") #Affiche "a + b = ?"
    i=i+1

# ----------------------------------------------------------------------------
    while True:  # Boucle infinie qui se répétera jusqu'à une saisie correcte

        try:
            d = int(input("Saisir le résultat: "))  # Demande au joueur de saisir sa réponse et conversion en entier
            break  # Sortir de la boucle si tout est correct
        except ValueError:
            print("Mauvais type de saisie, recommancez") # Si une erreur on redemande la saisie
# ----------------------------------------------------------------------------
    if d == a * b: #Calcule a * b et vérifie si la condition est bonne
        #Condition d (réponse) = a * b
        print ("Gagné, vous avez 1 point")
        x = x + 1
    else: #Condition d (réponse) ≠ a * b
        print("---------------------------Caramba, c'est raté!")
    print () #Retour à la ligne
       
print("Le jeu est terminé.")
#Affichage des scores
print () #Retour à la ligne
print ()
print ("Merci ",prenom)
print ("Jeu terminé, vous avez eu",x,"points en",i,"essais réalisé pendant",duree,"secondes")
print ("Votre moyenne est donc de ",round(x/i*20,2),"/20")

 

 

Pièce(s) jointe(s)
Download this file (table de multiplication.py)table de multiplication.py[ ]1 kB