76 lines
3.1 KiB
Python
76 lines
3.1 KiB
Python
![]() |
import tkinter as tk
|
||
|
import random
|
||
|
|
||
|
def lancer_des(nombre_lancers, nombre_faces):
|
||
|
# Initialiser un dictionnaire pour compter le nombre d'occurrences de chaque valeur de dé
|
||
|
resultat_lancers = {i+1: 0 for i in range(nombre_faces)}
|
||
|
|
||
|
# Effectuer les lancers de dé et compter les occurrences de chaque valeur
|
||
|
for _ in range(nombre_lancers):
|
||
|
valeur = random.randint(1, nombre_faces)
|
||
|
resultat_lancers[valeur] += 1
|
||
|
|
||
|
# Calculer la somme des occurrences pour les valeurs supérieures à la moyenne
|
||
|
somme_occurrences_sup_moyenne = sum(occurrences for valeur, occurrences in resultat_lancers.items() if valeur > (nombre_faces / 2))
|
||
|
|
||
|
# Afficher les résultats dans la fenêtre Tkinter
|
||
|
afficher_resultats(resultat_lancers, somme_occurrences_sup_moyenne)
|
||
|
|
||
|
def afficher_resultats(resultat_lancers, somme_occurrences_sup_moyenne):
|
||
|
# Supprimer les anciens résultats s'il y en a
|
||
|
effacer_resultats()
|
||
|
|
||
|
# Afficher les résultats dans une grille
|
||
|
label_titre = tk.Label(fenetre, text="Résultats des lancers de dé")
|
||
|
label_titre.grid(row=0, column=0, columnspan=2)
|
||
|
|
||
|
# Afficher les en-têtes des colonnes
|
||
|
label_valeur = tk.Label(fenetre, text="Valeur du dé")
|
||
|
label_valeur.grid(row=1, column=0)
|
||
|
|
||
|
label_occurrences = tk.Label(fenetre, text="Occurrences")
|
||
|
label_occurrences.grid(row=1, column=1)
|
||
|
|
||
|
# Afficher chaque valeur de dé et son nombre d'occurrences
|
||
|
for i, (valeur, occurrences) in enumerate(resultat_lancers.items(), start=2):
|
||
|
label_valeur = tk.Label(fenetre, text=str(valeur))
|
||
|
label_valeur.grid(row=i, column=0)
|
||
|
|
||
|
label_occurrences = tk.Label(fenetre, text=str(occurrences))
|
||
|
label_occurrences.grid(row=i, column=1)
|
||
|
|
||
|
# Afficher la somme des occurrences pour les valeurs supérieures à la moyenne
|
||
|
label_somme = tk.Label(fenetre, text="Somme occurrences (valeurs supérieures à la moyenne)")
|
||
|
label_somme.grid(row=i+1, column=0, columnspan=2)
|
||
|
|
||
|
label_somme_occurrences = tk.Label(fenetre, text=str(somme_occurrences_sup_moyenne))
|
||
|
label_somme_occurrences.grid(row=i+2, column=0, columnspan=2)
|
||
|
|
||
|
def effacer_resultats():
|
||
|
# Supprimer tous les widgets dans la fenêtre (sauf l'entrée et le bouton)
|
||
|
for widget in fenetre.winfo_children():
|
||
|
if widget not in [entree_lancers, entree_faces, bouton_lancer]:
|
||
|
widget.grid_forget()
|
||
|
|
||
|
# Interface graphique
|
||
|
fenetre = tk.Tk()
|
||
|
fenetre.title("Lancers de dés")
|
||
|
|
||
|
# Entrées pour le nombre de lancers et le nombre de faces du dé
|
||
|
entree_lancers = tk.Entry(fenetre, width=10)
|
||
|
entree_lancers.grid(row=0, column=0, padx=5, pady=5)
|
||
|
|
||
|
label_lancers = tk.Label(fenetre, text="Nombre de lancers")
|
||
|
label_lancers.grid(row=0, column=1, padx=5, pady=5)
|
||
|
|
||
|
entree_faces = tk.Entry(fenetre, width=10)
|
||
|
entree_faces.grid(row=1, column=0, padx=5, pady=5)
|
||
|
|
||
|
label_faces = tk.Label(fenetre, text="Nombre de faces du dé")
|
||
|
label_faces.grid(row=1, column=1, padx=5, pady=5)
|
||
|
|
||
|
# Bouton pour lancer les dés
|
||
|
bouton_lancer = tk.Button(fenetre, text="Lancer les dés", command=lambda: lancer_des(int(entree_lancers.get()), int(entree_faces.get())))
|
||
|
bouton_lancer.grid(row=2, column=0, columnspan=2, pady=10)
|
||
|
|
||
|
fenetre.mainloop()
|