You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
3.0 KiB
92 lines
3.0 KiB
import tkinter as tk
|
|
|
|
# Vérifie les entrées
|
|
def Valid():
|
|
"Remplace le nombre a virgule par un float exploitable par python et le rajoute à la liste des notes"
|
|
global lst_nombre
|
|
# Pour être sûr que l'utilisateur ne fait pas n'importe quoi
|
|
# On part du principe que l'utilisateur ne sait pas qu'il faut utiliser des points à la place des virgules
|
|
nombre = entrée_notes.get()
|
|
nombre = nombre.replace("," , ".")
|
|
nombre = float(nombre)
|
|
print(nombre)
|
|
lst_nombre.append(nombre)
|
|
txt_lst_notes.config(text=f"Voici les notes {lst_nombre} !")
|
|
|
|
# Calcule la note max, min et la moyenne
|
|
def Calcul():
|
|
"Calcul et affiche la note la plus haute, la plus basse, et la moyenne du groupe"
|
|
global lst_nombre
|
|
total = 0
|
|
nombre_notes = 0
|
|
print(lst_nombre)
|
|
lst_nombre.sort()
|
|
print(lst_nombre)
|
|
note_min = lst_nombre[0]
|
|
note_max = lst_nombre[-1]
|
|
for i in range(len(lst_nombre)):
|
|
total += lst_nombre[i]
|
|
nombre_notes += 1
|
|
moyenne = total/nombre_notes
|
|
moyenne = round(moyenne, 1)
|
|
# Remplace les textes vides par les notes
|
|
txt_note_min.config(text=f"Note la plus basse : {note_min}")
|
|
txt_note_max.config(text=f"Note la plus haute : {note_max}")
|
|
txt_moyenne.config(text=f"Moyenne du groupe : {moyenne}")
|
|
|
|
# Effacer les valeurs de la liste
|
|
def Effacer():
|
|
"Efface toutes les notes pour une nouvelle série de notes"
|
|
global lst_nombre
|
|
lst_nombre = []
|
|
txt_lst_notes.config(text=f"Voici les notes {lst_nombre} !")
|
|
|
|
txt_note_min.config(text="")
|
|
txt_note_max.config(text="")
|
|
txt_moyenne.config(text="")
|
|
|
|
# Configuration de la fenêtre
|
|
screen = tk.Tk()
|
|
screen.title("Calcul de notes")
|
|
screen.minsize(300, 300)
|
|
screen.maxsize(300, 300)
|
|
|
|
# Initialisation de la liste
|
|
lst_nombre = []
|
|
|
|
# Différents textes présents (ou non) sur la page
|
|
#Zone d'entrée pour les nombres
|
|
welcome_txt = tk.Label(text="Veuillez entrer des nombres, pour connaitre \n la note la plus basse, la plus haute et la moyenne ! \n Penser à bien valider vos nombre avant le calcul !")
|
|
welcome_txt.place(relx=0.5, y=70, anchor="center")
|
|
|
|
entrée_notes = tk.Entry(width = 20)
|
|
entrée_notes.place(relx=0.5, rely=0.5, anchor="center")
|
|
|
|
txt_note_min = tk.Label(text="")
|
|
txt_note_min.place(x=0, y=10)
|
|
|
|
txt_note_max = tk.Label(text="")
|
|
txt_note_max.place(x=170, y=10)
|
|
|
|
txt_moyenne = tk.Label(text="")
|
|
txt_moyenne.place(relx=0.5, y=40, anchor="center")
|
|
|
|
txt_lst_notes = tk.Label(text="")
|
|
txt_lst_notes.place(relx=0.5, rely=0.4, anchor="center")
|
|
|
|
|
|
# Différents bouton qui renvoie aux trois fonctions
|
|
bouton_verif = tk.Button(width = 8, height = 3, text = "Vérifier", command=Valid)
|
|
bouton_verif.place(relx=0.5, rely=0.7, anchor="center")
|
|
|
|
bouton_calcul = tk.Button(width = 8, height = 3, text = "Calcul", command=Calcul)
|
|
bouton_calcul.place(relx=0.7, rely=0.8,)
|
|
|
|
bouton_calcul = tk.Button(width = 8, height = 3, text = "Effacer", command=Effacer)
|
|
bouton_calcul.place(x=22, rely=0.8,)
|
|
|
|
help(Valid)
|
|
help(Calcul)
|
|
help(Effacer)
|
|
|
|
screen.mainloop()
|
|
|