5 changed files with 1 additions and 339 deletions
@ -1,113 +0,0 @@ |
|||||
#!/usr/bin/env python3 |
|
||||
# -*- coding: utf-8 -*- |
|
||||
""" |
|
||||
Created on Sat Jan 23 19:23:01 2021 |
|
||||
|
|
||||
@author: manu |
|
||||
""" |
|
||||
|
|
||||
from File import File_chaine as File |
|
||||
from Pile import Pile_chaine as Pile |
|
||||
|
|
||||
|
|
||||
class Arbre: |
|
||||
"""Un arbre binaire.""" |
|
||||
def __init__(self, val): |
|
||||
self.valeur = val |
|
||||
self.gauche = None |
|
||||
self.droit = None |
|
||||
|
|
||||
def insere_gauche(self, val): |
|
||||
"""Insère la valeur val à la racine du fils gauche de l'arbre. |
|
||||
L'ancien fils gauche devient le fils gauche du nouveau nœud. |
|
||||
Renvoie le sous arbre créé.""" |
|
||||
nouvel_arbre = Arbre(val) |
|
||||
nouvel_arbre.gauche = self.gauche |
|
||||
self.gauche = nouvel_arbre |
|
||||
return nouvel_arbre |
|
||||
|
|
||||
def insere_droit(self, val): |
|
||||
"""Insère la valeur val à la racine du fils droit de l'arbre. |
|
||||
L'ancien fils droit devient le fils gauche du nouveau nœud. |
|
||||
Renvoie le sous arbre créé.""" |
|
||||
nouvel_arbre = Arbre(val) |
|
||||
nouvel_arbre.gauche = self.droit |
|
||||
self.droit = nouvel_arbre |
|
||||
return nouvel_arbre |
|
||||
|
|
||||
|
|
||||
def taille(a): |
|
||||
"""Renvoie la taille de l'arbre a.""" |
|
||||
if a is None: |
|
||||
return 0 |
|
||||
return 1 + taille(a.gauche) + taille(a.droit) |
|
||||
|
|
||||
|
|
||||
def hauteur(a): |
|
||||
"""Renvoie la hauteur de l'arbre a.""" |
|
||||
if a is None: |
|
||||
return 0 |
|
||||
return 1 + max(hauteur(a.gauche), hauteur(a.droit)) |
|
||||
|
|
||||
|
|
||||
def parcours_bfs(a): |
|
||||
"""Affiche tous les nœuds de l'arbre non vide a par un parcours BFS.""" |
|
||||
a_traiter = File() |
|
||||
a_traiter.enfiler(a) |
|
||||
while not a_traiter.est_vide(): |
|
||||
noeud = a_traiter.defiler() |
|
||||
print(noeud.valeur) |
|
||||
if noeud.gauche is not None: |
|
||||
a_traiter.enfiler(noeud.gauche) |
|
||||
if noeud.droit is not None: |
|
||||
a_traiter.enfiler(noeud.droit) |
|
||||
|
|
||||
|
|
||||
def parcours_dfs_iter(a): |
|
||||
"""Affiche tous les nœuds de l'arbre non vide a par un parcours DFS.""" |
|
||||
a_traiter = Pile() |
|
||||
a_traiter.empiler(a) |
|
||||
while not a_traiter.est_vide(): |
|
||||
noeud = a_traiter.depiler() |
|
||||
print(noeud.valeur) |
|
||||
if noeud.droit is not None: |
|
||||
a_traiter.empiler(noeud.droit) |
|
||||
if noeud.gauche is not None: |
|
||||
a_traiter.empiler(noeud.gauche) |
|
||||
|
|
||||
|
|
||||
def parcours_dfs_prefixe(a): |
|
||||
"""Affiche tous les nœuds de l'arbre a par un parcours DFS préfixé.""" |
|
||||
if a is None: |
|
||||
return |
|
||||
print(a.valeur) |
|
||||
parcours_dfs_prefixe(a.gauche) |
|
||||
parcours_dfs_prefixe(a.droit) |
|
||||
|
|
||||
|
|
||||
def parcours_dfs_infixe(a): |
|
||||
"""Affiche tous les nœuds de l'arbre a par un parcours DFS préfixé.""" |
|
||||
if a is None: |
|
||||
return |
|
||||
parcours_dfs_infixe(a.gauche) |
|
||||
print(a.valeur) |
|
||||
parcours_dfs_infixe(a.droit) |
|
||||
|
|
||||
|
|
||||
def parcours_dfs_postfixe(a): |
|
||||
"""Affiche tous les nœuds de l'arbre a par un parcours DFS préfixé.""" |
|
||||
if a is None: |
|
||||
return |
|
||||
parcours_dfs_postfixe(a.gauche) |
|
||||
parcours_dfs_postfixe(a.droit) |
|
||||
print(a.valeur) |
|
||||
|
|
||||
|
|
||||
if __name__ == "__main__": |
|
||||
a = Arbre("A") |
|
||||
a.insere_gauche("B") |
|
||||
a.insere_droit("C") |
|
||||
a.gauche.insere_gauche("D") |
|
||||
a.gauche.insere_droit("E") |
|
||||
a.gauche.gauche.insere_droit("G") |
|
||||
a.droit.insere_gauche("F") |
|
@ -1,9 +0,0 @@ |
|||||
from tkinter import * |
|
||||
|
|
||||
fenetre = Tk() |
|
||||
|
|
||||
label = Label(fenetre, text = "Hello world") |
|
||||
label.pack() |
|
||||
|
|
||||
bouton = Button(fenetre, |
|
||||
fenetre.mainloop() |
|
@ -1,94 +0,0 @@ |
|||||
import tkinter as tk |
|
||||
|
|
||||
fen = tk.Tk() |
|
||||
fen.title("Calculatrice") |
|
||||
|
|
||||
#taille de la fenetre |
|
||||
fen.geometry("550x450") |
|
||||
|
|
||||
canvas=tk.Canvas(fen, width=500, height=300, bg="pink") |
|
||||
|
|
||||
label = tk.Label(canvas, text='Testing') |
|
||||
# canvas.create_window(50, 50, window.label) |
|
||||
canvas.grid(column=0,row=0) |
|
||||
|
|
||||
|
|
||||
|
|
||||
class Expression: |
|
||||
"""représente une expression arithmétique sous forme d'un arbre""" |
|
||||
def __init__ (self, valeur_racine, fils_gauche, fils_droit): |
|
||||
self.val_racine = valeur_racine |
|
||||
self.gauche = fils_gauche |
|
||||
self.droit = fils_droit |
|
||||
|
|
||||
def evalue (self) : |
|
||||
if self.gauche == None and self.droit == None : |
|
||||
return self.val_racine |
|
||||
|
|
||||
if self.gauche != None: #on ne met pas elif car les cas sont indépendants" |
|
||||
gauche_val = self.gauche.evalue() |
|
||||
else: |
|
||||
gauche_val = 0 |
|
||||
|
|
||||
if self.droit != None: |
|
||||
droite_val = self.droit.evalue() |
|
||||
else: |
|
||||
droite_val = 0 |
|
||||
|
|
||||
if self.val_racine == '+': |
|
||||
return gauche_val + droite_val |
|
||||
elif self.val_racine == '-': |
|
||||
return gauche_val - droite_val |
|
||||
elif self.val_racine == '*': |
|
||||
return gauche_val * droite_val |
|
||||
else : |
|
||||
raise ValueError ("Cette commande ne peut pas être effectuer") |
|
||||
|
|
||||
def __str__(self): |
|
||||
result = "" |
|
||||
if self.droit: |
|
||||
result = result + str(self.droit) |
|
||||
result = result + str(self.val_racine) + "\n" """le "/n" c'est pour avoir une nouvelle ligne de l'arbre""" |
|
||||
if self.gauche: |
|
||||
result += str(self.gauche) |
|
||||
return result |
|
||||
|
|
||||
def multiplication(self): |
|
||||
"""Multiplie la valeur des fils gauche et droits""" |
|
||||
if self.gauche == int and self.droit == int : |
|
||||
return self.gauche * self.droit |
|
||||
|
|
||||
def addition(self): |
|
||||
"""Additionne les valeurs des fils gauche et droits""" |
|
||||
if self.gauche == int and self.droit == int : |
|
||||
return self.gauche + self.droit |
|
||||
|
|
||||
#test |
|
||||
exp = Expression('*', |
|
||||
Expression(6, None, None), |
|
||||
Expression('+', |
|
||||
Expression(4, None, None), |
|
||||
Expression(3, None, None) |
|
||||
) |
|
||||
) |
|
||||
|
|
||||
|
|
||||
|
|
||||
# Label pour l'interface |
|
||||
label_1 = tk.Label(fen, text="Entrez l'expression :") |
|
||||
label_1.grid() |
|
||||
|
|
||||
# Champ de texte pour l'entrée de l'expression |
|
||||
entry = tk.Entry(fen, width=30) |
|
||||
entry.grid() |
|
||||
|
|
||||
# Bouton pour calculer l'expression |
|
||||
#btn_calculer = tk.Button(fenetre, text="Calculer", command=evaluer_expression) |
|
||||
#btn_calculer.pack() |
|
||||
|
|
||||
# Label pour afficher le résultat |
|
||||
label_2 = tk.Label(fen, text="Résultat: ") |
|
||||
label_2.grid() |
|
||||
|
|
||||
# Lancement de l'interface graphique |
|
||||
fen.mainloop() |
|
@ -1,123 +0,0 @@ |
|||||
import tkinter as tk |
|
||||
|
|
||||
from decimal import * |
|
||||
|
|
||||
import numpy as np |
|
||||
|
|
||||
from matplotlib.figure import Figure |
|
||||
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg |
|
||||
|
|
||||
fen = tk.Tk() |
|
||||
home = tk.Frame() |
|
||||
fen.title("Calculateur d'IMC") |
|
||||
|
|
||||
#taille de la fenetre |
|
||||
fen.geometry("950x750") |
|
||||
|
|
||||
canvas=tk.Canvas(fen, width=600, height=500, bg="white") #canvas de droite |
|
||||
blanc1 = tk.PhotoImage(file = 'blanc1.png')#image cachée |
|
||||
image_container1= canvas.create_image(0, 0,anchor=tk.NW,image = blanc1)#son placement |
|
||||
canvas.grid(column=1,row=0) #placement canvas |
|
||||
|
|
||||
canvas2=tk.Canvas(fen, width=225, height=500, bg="white") #canvas de gauche |
|
||||
blanc = tk.PhotoImage(file = 'blanc.png')#image cachée |
|
||||
image_container2= canvas2.create_image(40, 10,anchor=tk.NW, image = blanc)#son placement |
|
||||
canvas2.grid(column=0, row=0) #placement canvas |
|
||||
|
|
||||
lbl1=tk.Label(fen, text="votre poids (en kg)", font='Arial') #label poids |
|
||||
lbl1.grid(column=0, columnspan=2, padx=10, pady=10, row=1) |
|
||||
|
|
||||
entree_kg = tk.Entry(fen) #entry poids |
|
||||
entree_kg.grid(column=0, columnspan=2,ipadx=50, padx=10, pady=10, row=2) |
|
||||
|
|
||||
lbl2=tk.Label(fen, text="votre taille (en cm)", font='Arial') #label taille |
|
||||
lbl2.grid(column=0, columnspan=2, padx=10, pady=10, row=3) |
|
||||
|
|
||||
entree_cm = tk.Entry(fen) #entry taille |
|
||||
entree_cm.grid(column=0, columnspan=2,ipadx=50, padx=10, pady=10, row=4) |
|
||||
|
|
||||
Label1=tk.Label(fen, text=" ", font=('Arial'))#texte de droite caché |
|
||||
Label1.grid(column=1, row=1, sticky="e", padx=50, pady=10) |
|
||||
|
|
||||
#photos |
|
||||
|
|
||||
image_norm = tk.PhotoImage(file = 'normal.png') |
|
||||
image_obes_s = tk.PhotoImage(file = 'obesite severe.png') |
|
||||
image_obes = tk.PhotoImage(file = 'obesite.png') |
|
||||
image_sousp = tk.PhotoImage(file = 'sous poids.png') |
|
||||
image_surpoids = tk.PhotoImage(file = 'surpoids.png') |
|
||||
|
|
||||
|
|
||||
#fonction qui affiche image imc+petite phrase+graphique |
|
||||
def afficher_imc(): |
|
||||
if float(entree_cm.get()) < 100: |
|
||||
Label1.config(text="Veuillez entrer une valeur plus haute(cm)") |
|
||||
|
|
||||
elif float(entree_cm.get()) > 210: |
|
||||
Label1.config(text="Veuillez entrer une valeur plus basse(cm)") |
|
||||
|
|
||||
elif float(entree_kg.get()) <= 0: |
|
||||
Label1.config(text="Veuillez entrer une valeur plus basse(kg)") |
|
||||
|
|
||||
elif float(entree_kg.get()) > 210: |
|
||||
Label1.config(text="Veuillez entrer une valeur plus haute(kg)") |
|
||||
|
|
||||
else: |
|
||||
taille = float(entree_cm.get())/100 #convertir cm en m |
|
||||
poids= float(entree_kg.get()) |
|
||||
|
|
||||
imc =float(poids/taille**2) #calcul imc |
|
||||
|
|
||||
if imc <=18.4: |
|
||||
Label1.config(text="Vous êtes en sous-poids") |
|
||||
canvas2.itemconfig(image_container2,image=image_sousp) |
|
||||
|
|
||||
if imc >=18.5 and imc<=24.9: |
|
||||
Label1.config(text="Votre poids est normal") |
|
||||
canvas2.itemconfig(image_container2,image=image_norm) |
|
||||
|
|
||||
if imc >=25.0 and imc<=29.9: |
|
||||
Label1.config(text="Vous êtes en sur poids") |
|
||||
canvas2.itemconfig(image_container2,image=image_surpoids) |
|
||||
|
|
||||
if imc >=30.0 and imc<=34.9: |
|
||||
Label1.config(text="Vous etes en obesité") |
|
||||
canvas2.itemconfig(image_container2,image=image_obes) |
|
||||
|
|
||||
if imc >=35.0: |
|
||||
Label1.config(text="Vous etes en obesité sévere") |
|
||||
canvas2.itemconfig(image_container2, image=image_obes_s)#l'image de l'obésité sévère est un peu décalée, |
|
||||
#je ne suis pas arrivé à la redimensionner |
|
||||
imc2=Decimal(imc) |
|
||||
imc_simple = imc2.quantize(Decimal('.01')) #deux chiffres après la virgule |
|
||||
|
|
||||
lbl=tk.Label(fen, text="Votre imc est de :", font='Arial') |
|
||||
lbl.grid(column=0,row=1) |
|
||||
lbl=tk.Label(fen, text=imc_simple, font='Arial') #afficher le resultat calcul imc |
|
||||
lbl.grid(column=0, row=2) |
|
||||
|
|
||||
# graphique |
|
||||
fig = Figure(figsize=(7.2, 5.2), dpi=96) |
|
||||
ax = fig.add_subplot(111) |
|
||||
ax.axis([100, 220, 0, 180]) #limite du graphe |
|
||||
x = np.linspace(100, 220) # les tailles extrèmes en cm |
|
||||
# cm//m |
|
||||
ax.fill_between(x, 0, 18.4 * (x/100)**2, label="sous poids",color="LightBlue") # sous poids si 0 <= y <= 18.4 * x² |
|
||||
ax.fill_between(x, 18.5 * (x/100)**2, 24.9 * (x/100)**2, label="poids idéal",color="green") # idéal si 18.5 * x² <= y <= 24.9 * x² |
|
||||
ax.fill_between(x, 25 * (x/100)**2, 29.9 * (x/100)**2, label="surpoids",color="yellow") # surpoids si 25 * x² <= y <= 29.9 * x² |
|
||||
ax.fill_between(x, 30 * (x/100)**2, 34.9 * (x/100)**2, label="obesité",color="orange") # obésité si 30 * x² <= y <= 34.9 * x² |
|
||||
ax.fill_between(x,180, 35 * (x/100)**2, 40 * (x/100)**2, label="obesité sévère",color="red") # obesité sevère si 35 * x² <= y |
|
||||
ax.scatter(taille*100, poids, color='black')#point a placer sur le graphique. il ne s'affiche qu'une fois |
|
||||
#parce que je ne suis pas arrivé a ne pas le réinitialisé |
|
||||
|
|
||||
|
|
||||
graph = FigureCanvasTkAgg(fig, master=fen) |
|
||||
canvas = graph.get_tk_widget() |
|
||||
canvas.grid(row=0, column=1) |
|
||||
|
|
||||
bouton=tk.Button(fen, text="Afficher l'IMC", command=afficher_imc) #bouton pour afficher tout |
|
||||
bouton.grid(column=0, columnspan=2,ipadx=50, padx=10, pady=10, row=6) |
|
||||
|
|
||||
|
|
||||
|
|
||||
fen.mainloop() |
|
Loading…
Reference in new issue