#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Thu Feb 18 18:25:11 2021 @author: sekhmet """ from gestion_erreurs import warning, debug from configuration import CONFIG from gestion_donnees import convertit_age_vers_texte import gestion_unites as u from math import ceil #### Les fonctions qui permettent de faire les calculs additionnels une fois qu'on a l'extrapolation (ou pas) def interpole_lineaire(dates, donnees, t, liste_err): """ simple interpolation linéaire. dates et donnees sont les dates et données de l'enfant. t est le temps (jours) auquel on veut l'interpolation. On renvoie la donnée interpolée. On interpole linéairement entre les deux données. Si ça n'est pas possible parce que t n'est pas dans les bornes, on renvoie -1 """ if tdates[-1]: return -1 # en dehors des bornes i=0 # on cherche l'intervalle : entre dates[i] et dates[i+1] on a la donnée t while imax(donnees) or val1: return "s" else: return "" def joliechaine_age(age): """ prend en argument une chaîne du type 6a3m2j et renvoie une chaîne un peu plus jolie à lire genre 6 ans, 3mois, 2 jours""" retour = "" nombre = "" for char in age: if char=="a": retour+=nombre+" an"+met_s(nombre)+", " nombre="" elif char=="m": retour+=nombre+" mois, " nombre="" elif char=="s": retour+=nombre+" semaine"+met_s(nombre)+", " nombre="" elif char=="j": retour+=nombre+" jour"+met_s(nombre)+", " nombre="" else: nombre+=char #print(retour) return retour[:-2] def formate_resultat_donnee(age, date, donnee, typedonnee, extra, liste_err): """ Formate le tout en une zolie phrase age date et donnee sont les données. date peut être None (sinon donnée de date) typedonnee est le type de donnée (poids, etc) extra est un truc additionnel à mettre entre parenthèses""" donnee_arrondie = u.arrondit_donnee(donnee, typedonnee) chaine = "À "+joliechaine_age(convertit_age_vers_texte(age)) if date != None: chaine += ", le "+date.strftime("%d/%m/%Y") if typedonnee == "poids": chaine+= ", l'enfant pèsera "+str(donnee_arrondie)+" kg" elif typedonnee == "taille": chaine+= ", l'enfant mesurera "+str(donnee_arrondie)+" cm" else: # phrase générique chaine+= ", la donnée sera : "+str(donnee_arrondie)+" "+CONFIG["unites_typedonnees"][typedonnee] if extra!="": ajout=" ("+extra+")" else: ajout="" chaine+=ajout+"." return chaine def formate_resultat_age(age, date, donnee, typedonnee, extra, liste_err): """ formate les données en une zolie phrase age, date et donnee sont les données. date est une donnée de date qui peut être vide. typedonnee est le type de donnée (poids, etc) extra est un truc additionnel à mettre entre parenthèses""" age_joli = joliechaine_age(convertit_age_vers_texte(age)) if typedonnee=="poids": chaine= "L'enfant atteindra un poids de "+str(donnee)+" kg à l'âge de "+age_joli elif typedonnee=="taille": chaine= "L'enfant atteindra la taille "+str(donnee)+ "cm à l'âge de "+age_joli else:# phrase générique chaine= "L'enfant atteindra la donnée "+typedonnee+" "+str(donnee)+" à l'âge de "+age_joli if date != None: chaine += ", le "+date.strftime("%d/%m/%Y") if extra!="": ajout=" ("+extra+")" else: ajout="" chaine+=ajout+"." return chaine def formate_extrapole(nb_extra): """ Renvoie une chaîne qui dit sur cb on a extrapolé""" message="extrapolation à partir " if nb_extra== 0: message+="de l'ensemble des données" elif nb_extra==1: message+="de la donnée la plus récente" else: message+="des "+str(nb_extra)+" dernières données" return message def formate_interpole(): return "interpolation à partir des données existantes"