import tkinter as tk fenetre = tk.Tk() fenetre.title("Prévision conso éléctrique") tk.Label(text="Choisissez le nombre de voisins").grid(column= 1, columnspan= 3) value = tk.DoubleVar() entree1 = tk.Entry(fenetre, textvariable=value, width=30) entree1.grid(column=1, columnspan= 3) tk.Label(text="veuillez remplir les informations suivantes :").grid(column= 1, columnspan= 3) tk.Label(text="entrer votre date (aaaa/mm/jj) :").grid(column= 1, columnspan= 3) value = tk.DoubleVar() entree2 = tk.Entry(fenetre, textvariable=value, width=30) entree2.grid(column=1, columnspan= 3) tk.Label(text="entrer la température moyenne :").grid(column= 1, columnspan= 3) value = tk.DoubleVar() entree3 = tk.Entry(fenetre, textvariable=value, width=30) entree3.grid(column=1, columnspan= 3) tk.Label(text="entrer la température de référence :").grid(column= 1, columnspan= 3) value = tk.DoubleVar() entree4 = tk.Entry(fenetre, textvariable=value, width=30) entree4.grid(column=1, columnspan= 3) tk.Label(text="Pour tester vos valeurs cliquer sur le bouton suivant :").grid(column= 1, columnspan= 3) def lecture(nom) : """ lit le fichier csv et renvoie un tableau""" tableau = [] with open (nom, 'r') as f : titre = f.readline() for ligne in f: ligne = ligne.strip() lst_element = ligne.split(',') picjournalier = float(lst_element[1]) temperaturemoy = float(lst_element[2]) temperatureref = float(lst_element[3]) tableau.append([picjournalier,temperaturemoy,temperatureref]) return tableau def numerojour(date) : """elle prend en parametre une date ecrite en chaîne de caractere separée par des tirets et elle renvoie un numero de jour entre 1 et 365""" separation = date.split("-") annee = int(separation[0]) mois = int(separation[1]) jour = int(separation[2]) jours_mois = [31,28,31,30,31,30,31,31,30,31,30,31] if estbissextile(annee) : jours_mois[1] = 29 numero = jour i = 0 while i < mois - 1 : numero = numero + jours_mois[i] i = i + 1 return numero def estbissextile(annee) : """ prend en parametre une annee et verifie si elle est bissextile ou non """ if annee % 4 == 0: if annee % 400 == 0 : return True if annee % 100 != 0 : return True return False def distance (t1 ,t2) : """prend en paramètre deux tuples, on calcule a l'aide la formule les distanjce entre chaque valeur des deux tuples et renvoit la distance entre les deux.""" from math import sqrt date1, temperaturemoy1, temperatureref1 = t1 date2, temperaturemoy2, temperatureref2 = t2 distancedate1 = 365- date2 distancedate2 = 365- date1 if distancedate1 < distancedate2 : distancefin = sqrt((distancedate1**2) + (temperaturemoy1 - temperaturemoy2)**2 +(temperatureref1 -temperatureref2)**2) return distancefin else: distancefin = sqrt((distancedate2**2) + (temperaturemoy1 - temperaturemoy2)**2 +(temperatureref1 -temperatureref2)**2) return distancefin def kPlusProches(point, tableau): """prend en paramètre en tuple et un tableau et renvoie une liste de tuples triee""" point = numero_jour, temperature_moyenne, temperature_reference liste_distances = [] for i in range(len(tableau)): voisin = (i + 1, tableau[i][1], tableau[i][2]) d = distance(point, voisin) liste_distances.append((d, i)) liste_distances.sort() return liste_distances """ def puissancemoyenne (liste_distances, tableau) : calcule et renvoie la puissance éléctrique moyenne des voisins moy = (liste_distances + tableau) / 2 return moy """ def lancerTest () : """ récupère les valeurs entrées par l'utilisateur, et renvoie les prévisions de conso """ entree1.get = kPlusProches entree2.get = numerojour = lecture entree3.get = temperaturemoy entree4.get = temperatureref tk.Button (fenetre, text ='test', command = lancerTest).grid(column=1,columnspan= 5) fenetre.mainloop()