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.
99 lines
3.6 KiB
99 lines
3.6 KiB
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()
|
|
entree = tk.Entry(fenetre, textvariable=value, width=30)
|
|
entree.grid(column=1, columnspan= 3)
|
|
|
|
tk.Label(text="veuillez remplir les informations suivantes :").grid(column= 1, columnspan= 3)
|
|
|
|
tk.Label(text="entrer votre date :").grid(column= 1, columnspan= 3)
|
|
entree = tk.Entry(fenetre, textvariable=value, width=30)
|
|
entree.grid(column=1, columnspan= 3)
|
|
tk.Label(text="entrer la température moyenne :").grid(column= 1, columnspan= 3)
|
|
entree = tk.Entry(fenetre, textvariable=value, width=30)
|
|
entree.grid(column=1, columnspan= 3)
|
|
tk.Label(text="entrer la température de référence :").grid(column= 1, columnspan= 3)
|
|
entree = tk.Entry(fenetre, textvariable=value, width=30)
|
|
entree.grid(column=1, columnspan= 3)
|
|
|
|
tk.Label(text="Pour tester vos valeurs cliquer sur le bouton suivant :").grid(column= 1, columnspan= 3)
|
|
tk.Button (fenetre, text ='test').grid(column=1,columnspan= 5)
|
|
fenetre.mainloop()
|
|
|
|
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
|