Tablex ou revision des tables de multiplication

Description

Petit soft codé en python pour apprendre ou reviser ses tables de multiplication.

Soyez tolérant, je suis un amateur. Le programme fonctionne bien et je n'ai pas bug connu. Il prend en premier paramètre le nom de l'utilisateur, puis demande la table a réviser, pose 10 multiplications aléatoires sur la table et affiche en fin de série le pourcentage de réussite.

Idéal pour apprendre ludiquement aux enfants leurs tables et aux adultes à les réviser.

Source / Exemple :


# -*- coding: utf-8 -*-

from Tkinter import *
from random import randrange

def dem_pseudo():
    "Demande le pseudo de l'utilisateur"
    global texte1, bouton1, entree1, compteur1, compteur2
    texte1 = Label(fenetre1, text='Entrez votre prénom')
    texte1.pack()
    entree1 = Entry(fenetre1)
    entree1.pack()
    entree1.focus_set()
    bouton1 = Button(fenetre1, text='Valider', command=(lambda:choix_pseudo(0)))
    bouton1.pack()
    bouton2 = Button(fenetre1, text='Bye Bye', command=fenetre1.destroy)
    bouton2.pack(side=BOTTOM)
    rajout=Label(fenetre1,text="***But du jeu*** Apprendre et/ou reviser les tables de multiplications",fg='red')
    rajout.pack(side=BOTTOM)
    fenetre1.bind('<Return>', choix_pseudo)

def choix_pseudo(event):
    "Choix du pseudo"
    global texte1, bouton1, entree1, compteur1, compteur2, pseudo
    try:
        str(entree1.get())
    except:
        pseudo = "anonyme"
    else:
        pseudo = str(entree1.get())
        if pseudo == "":
            pseudo = "anonyme"
    entree1.destroy()
    bouton1.destroy()
    dem_table()
    

def dem_table():
    "Demande à l'utilisateur la table"
    global texte1, bouton1, entree1, compteur1, compteur2, pseudo
    texte1.configure(text='Veuillez choisir votre table de multiplication :')
    entree1 = Entry(fenetre1)
    entree1.pack()
    entree1.focus_set()
    bouton1 = Button(fenetre1, text='Valider', command=(lambda:choix_table(0)))
    bouton1.pack()
    fenetre1.bind('<Return>', choix_table)
    

def choix_table(event):
    "Choix de la table à réviser"
    global table, compteur1, compteur2, texte1, bouton1, entree1, pseudo
    try:
        int(entree1.get())
    except:
        table = randrange(1,10)
    else:
        table = int(entree1.get())
    entree1.destroy()
    bouton1.destroy()
    choix_chiffre()

def choix_chiffre():
    "Choix du chiffre"
    global table, chiffre, entree1, bouton1, texte1, compteur1, compteur2, pseudo
    chiffre = randrange(1,10)
    texte1.configure(text=str(chiffre)+' x '+str(table)+' =')
    entree1 = Entry(fenetre1)
    entree1.pack()
    entree1.focus_set()
    compteur1 += 1
    bouton1 = Button(fenetre1, text='Valider', command=(lambda:val_mult(0)))
    bouton1.pack()
    fenetre1.bind('<Return>', val_mult)
    
def val_mult(event):
    "Validation de la multiplication"
    global table, chiffre, entree1, bouton1, compteur2, bouton2, texte1, texte2, texte3, compteur1, compteur2, pseudo
    bouton1.destroy()
    res_juste = table * chiffre
    try:
        int(entree1.get())
    except:
        res_utilisateur = 0
    else:
        res_utilisateur = int(entree1.get())

    entree1.destroy()
    if res_juste == res_utilisateur:
        texte1.configure(text='Bravo '+str(pseudo)+' ! Tu as trouvé !')
        compteur2 += 1
    else:
        texte1.configure(text='Faux, la réponse était :'+str(res_juste))
    if compteur1 == 10:
        taux = compteur2 * 100 / 10
        texte2 = Label(fenetre1, text='Ton taux de réussite est de : '+str(taux)+' %')
        texte2.pack()
        texte3 = Label(fenetre1, text='Veux tu recommencer ?')
        texte3.pack()
        bouton1 = Button(fenetre1, text='oui', command=(lambda:recommencer(0)))
        bouton1.pack()
        bouton2 = Button(fenetre1, text='non', command=fenetre1.destroy)
        bouton2.pack()
        fenetre1.bind('<Return>', recommencer)
    else:
        bouton1 = Button(fenetre1, text='on continue :)', command=(lambda:continuer(0)))
        bouton1.pack()
        fenetre1.bind('<Return>', continuer)

def recommencer(event):
    "Réinitialisateur"
    global table, chiffre, entree1, bouton1, compteur2, bouton2, texte1, texte2, texte3, compteur1, compteur2, pseudo
    texte2.destroy()
    texte3.destroy()
    bouton1.destroy()
    bouton2.destroy()
    compteur1 = 0
    compteur2 = 0
    dem_table()

def continuer(event):
    "Réinitialisateur partiel"
    global table, chiffre, entree1, bouton1, compteur2, bouton2, texte1, texte2, texte3, compteur1, compteur2, pseudo
    bouton1.destroy()
    choix_chiffre()

# Programme principal
fenetre1 = Tk()
fenetre1.title('TableX.-V4.1')
fenetre1.geometry('350x150')
compteur1 = 0
compteur2 = 0
dem_pseudo()
fenetre1.mainloop()

Conclusion :


Ce soft a été codé par moi meme avec l'aide de cat_loic qui en partage la création. Il est sous licence libre.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.