#!/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, donnee, typedonnee, extra, liste_err): """ Formate le tout en une zolie phrase age et donnee sont les données, 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 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, donnee, typedonnee, extra, liste_err): """ formate les données en une zolie phrase age et donnee sont les données 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 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"