]>
Commit | Line | Data |
---|---|---|
cf0d4c8c DL |
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 "" |