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