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.
69 lines
2.7 KiB
69 lines
2.7 KiB
import tkinter as tk
|
|
from math import sqrt
|
|
|
|
def transfoEnInt(groupe):
|
|
"""Prend en parametre un tuple ou une liste de réels de type str
|
|
et renvoie une liste de réels de type int"""
|
|
lst = []
|
|
for element in groupe:
|
|
lst += [int(element)]
|
|
return lst
|
|
|
|
def lecture(nomFichier):
|
|
"""Prend en parametre le nom du fichier csv à lire et renvoie un tableau."""
|
|
with open(nomFichier, 'r') as fichier:
|
|
fichier_nettoye = []
|
|
for ligne in fichier:
|
|
fichier_nettoye += [ligne.strip()]
|
|
return fichier_nettoye
|
|
|
|
def estBissextile(annee):
|
|
"""prend en compte une annee à verifier si elle est bissextile et renvoie
|
|
True si elle l'est et False sinon"""
|
|
return annee%4 == 0 and annee%100 != 0 or annee%400 == 0
|
|
|
|
def numeroJour(date):
|
|
"""Prend en parametre une date au format aaaa-mm-jj et renvoie un entier
|
|
correspondant au numero du jour correspondant (de 1 à 365)"""
|
|
dateSeparee = transfoEnInt(date.split('-'))
|
|
totalJours = 0
|
|
JoursMois = [31,28,30,31,30,31,31,30,31,30,31] #Nombre de jours de chaques mois
|
|
for i in range(dateSeparee[1]-1):
|
|
totalJours += JoursMois[i]
|
|
if estBissextile(dateSeparee[0]) and totalJours + dateSeparee[2] >= 60 and dateSeparee[1] > 2:
|
|
#regarde si on est dans une année bissextile et apres fevrier
|
|
totalJours += 1
|
|
return totalJours + dateSeparee[2]
|
|
|
|
def distance(Tuple1 , Tuple2):
|
|
"""prend en parametre 2 tuples avec (Numéro du jour, Température moyenne, température
|
|
de référence) et renvoie la distance **euclidienne**"""
|
|
lst1 = transfoEnInt(Tuple1)
|
|
lst2 = transfoEnInt(Tuple2)
|
|
JoursOrdonnes = sorted([lst1[0],lst2[0]])
|
|
DiffJours = min([JoursOrdonnes[1]-JoursOrdonnes[0],365-JoursOrdonnes[1]+JoursOrdonnes[0]])
|
|
|
|
return sqrt(DiffJours**2 + (lst1[1]-lst2[1])**2+(lst1[2]-lst2[2])**2)
|
|
|
|
def kPlusProches(point,lstRepre):
|
|
"""Prend en parametre un tuple avec (Numéro du jour, Température moyenne,
|
|
température de référence) correspondant au point à verifier, une liste de
|
|
tuples de meme type et la consommation electrique
|
|
Renvoie une liste triée en fonction de la distance avec le"""
|
|
|
|
fenetre = tk.Tk()
|
|
fenetre.title("pour l'instant je sais pas quoi (FEUR) mettre") #Un truc comme gestionnaire du transport d'electricité non ? ou je pense que sur tkinter tu peux faire disparaitre
|
|
#le dessus (mais faut rajouter un bouton pour fermer la fenetre et tout c'est galere)
|
|
|
|
canva = tk.Canvas(fenetre, width = 400, height = 300, bg = "springgreen")
|
|
canva.grid()
|
|
|
|
value = tk.StringVar()
|
|
value.set("taper le nombre de voisin (k) voulu")
|
|
entree=tk.Entry(fenetre, textvariable=value, width=30)
|
|
entree.grid()
|
|
entree.bind("<Button>", lambda e:value.set(""))
|
|
|
|
texte = tk.Entry()
|
|
print(distance((1,1,1),(2,2,2)))
|
|
fenetre.mainloop()
|