From cf0d4c8c36224ca7059e99d03c25abaf694011d7 Mon Sep 17 00:00:00 2001 From: Denise sur Lya Date: Thu, 18 Feb 2021 20:05:29 +0100 Subject: =?UTF-8?q?extrapolation=20des=20courbes=20et=20calculs=20associ?= =?UTF-8?q?=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calculs_extrapole.py | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 calculs_extrapole.py (limited to 'calculs_extrapole.py') diff --git a/calculs_extrapole.py b/calculs_extrapole.py new file mode 100644 index 0000000..ab22502 --- /dev/null +++ b/calculs_extrapole.py @@ -0,0 +1,89 @@ +#!/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 + +#### Les fonctions qui permettent de faire les calculs additionnels une fois qu'on a l'extrapolation + +def met_s(chaine): + """ renvoie un s si pluriel, rien sinon""" + if int(chaine)>1: + 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+" année"+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 calcule_donnee_extrapolee(dates_extrapole, donnees_extrapole, age_voulu, typedonnee, liste_err): + """ prend en argument les données extrapolées, l'âge voulu en jours, + et le type de données qu'on veut afficher, et renvoie une jolie phrase + à afficher""" + age_voulu = int(age_voulu) # pour avoir les choses bien + debug("On veut la donnée à l'âge "+str(age_voulu), liste_err) + try: + i_date_voulue = dates_extrapole.index(age_voulu) + donnee_voulue = donnees_extrapole[i_date_voulue] + donnee_arrondie = u.arrondit_donnee(donnee_voulue, typedonnee) + chaine = "À "+joliechaine_age(convertit_age_vers_texte(age_voulu)) + + if typedonnee == "poids": + return chaine+", l'enfant pèsera "+str(donnee_arrondie)+" kg." + elif typedonnee == "taille": + return chaine+", l'enfant mesurera "+str(donnee_arrondie)+" cm." + else: # phrase générique + return chaine+", la donnée sera : "+str(donnee_arrondie)+" "+CONFIG["unites_typedonnees"][typedonnee]+"." + except: + warning("Impossible de calculer la donnée à l'âge "+age_voulu, liste_err) + return "" + +def calcule_age_extrapole(dates_extrapole, donnees_extrapole, donnee_voulue, typedonnee, liste_err): + """ prend en argument les données extrapolées, la donnée voulue (dans l'unité adaptée) + et son type, et renvoie la jolie phrase à afficher""" + + debug("On veut savoir à quel âge on a "+str(donnee_voulue), liste_err) + try: + i=0 + while i