Projet
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

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()