Imprimer
Catégorie : Programmation Python - 2nde SNT
Affichages : 681

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

# 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

# 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

# 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

# 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