diff options
Diffstat (limited to 'calculs_extrapole.py')
-rw-r--r-- | calculs_extrapole.py | 89 |
1 files changed, 89 insertions, 0 deletions
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 @@ | |||
1 | #!/usr/bin/env python3 | ||
2 | # -*- coding: utf-8 -*- | ||
3 | """ | ||
4 | Created on Thu Feb 18 18:25:11 2021 | ||
5 | |||
6 | @author: sekhmet | ||
7 | """ | ||
8 | |||
9 | from gestion_erreurs import warning, debug | ||
10 | from configuration import CONFIG | ||
11 | from gestion_donnees import convertit_age_vers_texte | ||
12 | import gestion_unites as u | ||
13 | |||
14 | #### Les fonctions qui permettent de faire les calculs additionnels une fois qu'on a l'extrapolation | ||
15 | |||
16 | def met_s(chaine): | ||
17 | """ renvoie un s si pluriel, rien sinon""" | ||
18 | if int(chaine)>1: | ||
19 | return "s" | ||
20 | else: | ||
21 | return "" | ||
22 | |||
23 | def joliechaine_age(age): | ||
24 | """ prend en argument une chaîne du type 6a3m2j et renvoie une chaîne un peu | ||
25 | plus jolie à lire genre 6 ans, 3mois, 2 jours""" | ||
26 | retour = "" | ||
27 | nombre = "" | ||
28 | for char in age: | ||
29 | if char=="a": | ||
30 | retour+=nombre+" année"+met_s(nombre)+", " | ||
31 | nombre="" | ||
32 | elif char=="m": | ||
33 | retour+=nombre+" mois, " | ||
34 | nombre="" | ||
35 | elif char=="s": | ||
36 | retour+=nombre+" semaine"+met_s(nombre)+", " | ||
37 | nombre="" | ||
38 | elif char=="j": | ||
39 | retour+=nombre+" jour"+met_s(nombre)+", " | ||
40 | nombre="" | ||
41 | else: | ||
42 | nombre+=char | ||
43 | #print(retour) | ||
44 | return retour[:-2] | ||
45 | |||
46 | |||
47 | |||
48 | def calcule_donnee_extrapolee(dates_extrapole, donnees_extrapole, age_voulu, typedonnee, liste_err): | ||
49 | """ prend en argument les données extrapolées, l'âge voulu en jours, | ||
50 | et le type de données qu'on veut afficher, et renvoie une jolie phrase | ||
51 | à afficher""" | ||
52 | age_voulu = int(age_voulu) # pour avoir les choses bien | ||
53 | debug("On veut la donnée à l'âge "+str(age_voulu), liste_err) | ||
54 | try: | ||
55 | i_date_voulue = dates_extrapole.index(age_voulu) | ||
56 | donnee_voulue = donnees_extrapole[i_date_voulue] | ||
57 | donnee_arrondie = u.arrondit_donnee(donnee_voulue, typedonnee) | ||
58 | chaine = "À "+joliechaine_age(convertit_age_vers_texte(age_voulu)) | ||
59 | |||
60 | if typedonnee == "poids": | ||
61 | return chaine+", l'enfant pèsera "+str(donnee_arrondie)+" kg." | ||
62 | elif typedonnee == "taille": | ||
63 | return chaine+", l'enfant mesurera "+str(donnee_arrondie)+" cm." | ||
64 | else: # phrase générique | ||
65 | return chaine+", la donnée sera : "+str(donnee_arrondie)+" "+CONFIG["unites_typedonnees"][typedonnee]+"." | ||
66 | except: | ||
67 | warning("Impossible de calculer la donnée à l'âge "+age_voulu, liste_err) | ||
68 | return "" | ||
69 | |||
70 | def calcule_age_extrapole(dates_extrapole, donnees_extrapole, donnee_voulue, typedonnee, liste_err): | ||
71 | """ prend en argument les données extrapolées, la donnée voulue (dans l'unité adaptée) | ||
72 | et son type, et renvoie la jolie phrase à afficher""" | ||
73 | |||
74 | debug("On veut savoir à quel âge on a "+str(donnee_voulue), liste_err) | ||
75 | try: | ||
76 | i=0 | ||
77 | while i<len(donnees_extrapole) and donnees_extrapole[i]<donnee_voulue: | ||
78 | i+=1 | ||
79 | |||
80 | age_joli = joliechaine_age(convertit_age_vers_texte(dates_extrapole[i])) | ||
81 | if typedonnee=="poids": | ||
82 | return "L'enfant atteindra un poids de "+str(donnee_voulue)+" kg à l'âge de "+age_joli+"." | ||
83 | elif typedonnee=="taille": | ||
84 | return "L'enfant atteindra la taille "+str(donnee_voulue)+ "cm à l'âge de "+age_joli+"." | ||
85 | else:# phrase générique | ||
86 | return "L'enfant atteindra la donnée "+typedonnee+" "+str(donnee_voulue)+" à l'âge de "+age_joli+"." | ||
87 | except: | ||
88 | warning("Impossible de calculer l'âge pour la donnée "+str(donnee_voulue), liste_err) | ||
89 | return "" | ||