def menu_clust(previous_menu): """Menu intermédiare permettant à l'utilisateur de choisir la méthode de clustering à utiliser Arguments: previous_menu {List} -- Menu précédent correspondant à l'utilisateur """ menu_act = {} menu_act["individu"] = previous_menu["individu"] menu_act["question"] = "Le Clustering est une méthode statistique permettant de regrouper les pays selon les \nvaleurs prises par les différents critères, l'application propose ici deux méthodes : \nLe CAH et les K-means\ \nQuelle méthode voulez vous utiliser ? \nNote : L'Inde a été retirée de la base de donnée afin de clarifier les résultats " menu_act["options"] = ["Clustering par méthode CAH", "Clustering par méthode des K-means", "Retour au menu précédent", "Quitter l'application"] if previous_menu["individu"].type == "Administrateur": menu_act["actions"] = [ (lambda previous_menu :previous_menu["individu"].clust('CAH',previous_menu)), (lambda previous_menu :previous_menu["individu"].clust('K-means',previous_menu)), (lambda previous_menu :indices_actions(Admin(),[0,1,2,3,5,6,7,8,9,10])), Individu().quitter] else : menu_act["actions"] = [ (lambda previous_menu :previous_menu["individu"].clust('CAH',previous_menu)), (lambda previous_menu :previous_menu["individu"].clust('K-means',previous_menu)), (lambda previous_menu :indices_actions(DataScientist(),[0,1,2,3,4,8,9,10])), Individu().quitter] menu_act["path"] = [] return(Ouvert(menu_act))
def gestion_pays(previous_menu): """Menu intermédiare permettant à l'utilisateur de choisir entre l'ajout et la suppréssion de pays Arguments: previous_menu {List} -- Menu précédent correspondant à l'utilisateur """ menu_act = {} menu_act["individu"] = previous_menu["individu"] menu_act["question"] = "Que voulez vous faire ? " menu_act["options"] = ["Ajouter/Modifier un pays", "Supprimer un pays (Administrateur seulement) ", "Retour au menu précédent", "Quitter l'application"] if previous_menu["individu"].type == "Administrateur": menu_act["actions"] = [ (lambda previous_menu :previous_menu["individu"].ajout_pays(previous_menu)), (lambda previous_menu :previous_menu["individu"].suppression(previous_menu)), (lambda previous_menu :indices_actions(Admin(),[0,1,2,3,5,6,7,8,9,10])), Individu().quitter] else : menu_act["actions"] = [ (lambda previous_menu :previous_menu["individu"].ajout_pays(previous_menu)), (lambda previous_menu :previous_menu["individu"].suppression(previous_menu)), (lambda previous_menu :indices_actions(DataScientist(),[0,1,2,3,4,8,9,10])), Individu().quitter] menu_act["path"] = [] return(Ouvert(menu_act))
def menu_graph(previous_menu): """Création du menu intermédaire pour la fonction représentation graphique Arguments: previous_menu {List} -- Menu précédent correspondant à l'utilisateur """ menu_act = {} menu_act["individu"] = previous_menu["individu"] menu_act["question"] = "Selectionnez le critère" menu_act["options"] = ["Superficie", #2 "Population", #3 "Croissance démographique", #4 "Inflation", #5 "Dette", #6 "Taux de chômage", #7 "Taux de dépenses en santé", #8 "Taux de dépenses en éducation", #9 "Taux de dépenses militaires", #10 "Retour au menu précédent", "Quitter l'application"] if previous_menu["individu"].type == "Administrateur": menu_act["actions"] = [ (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,1)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,2)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,3)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,4)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,5)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,6)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,7)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,8)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,9)), (lambda previous_menu :indices_actions(Admin(),[0,1,2,3,5,6,7,8,9,10])), Individu().quitter] else : menu_act["actions"] = [ (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,1)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,2)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,3)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,4)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,5)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,6)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,7)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,8)), (lambda previous_menu :previous_menu["individu"].representationgraphique(previous_menu,9)), (lambda previous_menu :indices_actions(DataScientist(),[0,1,2,3,4,8,9,10])), Individu().quitter] menu_act["path"] = [] return(Ouvert(menu_act))
def menu_resume(previous_menu): """Création du menu intermédaire pour l'affichage statistique Arguments: previous_menu {List} -- Menu précédent correspondant à l'utilisateur """ menu_act = {} menu_act["individu"] = menu_act["individu"] = previous_menu["individu"] menu_act[ "question"] = "L'affichage statistique permet de visualiser plusieurs informations" menu_act["options"] = [ "Afficher les pays dont le critère est le plus important", #2 "Afficher les pays dont le critère dépasse un certain seuil", #3 "Afficher les pays dont le critère ne dépasse pas un certain seuil", #4 "Affichage de la répartition des classes d'âges", #5 "Retour au menu principal", "Quitter l'application" ] menu_act["actions"] = [ menu_tricrois, menu_seuil_inf, menu_seuil_sup, # (lambda previous_menu: previous_menu["individu"].affichage_tableau_age( previous_menu)), (lambda previous_menu: Ouvert(menu[0])), Individu().quitter ] menu_act["path"] = [] return (Ouvert(menu_act))
def menu_age_seuil_sup(previous_menu): """Création du menu intermédaire pour les tranches d'age pour la fonction résumé d'information Arguments: previous_menu {List} -- Menu précédent correspondant à l'utilisateur """ menu_act = {} menu_act["individu"] = menu_act["individu"] = previous_menu["individu"] menu_act["question"] = "Selectionnez la tranche d'âge" menu_act["options"] = [ "0-14 ans", #2 "15-24 ans", #3 "25-54 ans", #4 "55-64 ans", #5 "65 ans et plus", #6 "Retour au menu principal", "Quitter l'application" ] menu_act["actions"] = [ (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( '0-14 years', previous_menu)), (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( '15-24 years', previous_menu)), (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( '25-54 years', previous_menu)), # (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( '55-64 years', previous_menu)), (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( '65 years and over', previous_menu)), menu_seuil_sup, Individu().quitter ] menu_act["path"] = [] return (Ouvert(menu_act))
def menu_age_des(previous_menu): """Création du menu intermédaire pour les tranches d'age pour la fonction résumé statistique Arguments: previous_menu {List} -- Menu précédent correspondant à l'utilisateur """ menu_act = {} menu_act["individu"] = menu_act["individu"] = previous_menu["individu"] menu_act["question"] = "Selectionnez la tranche d'âge" menu_act["options"] = ["0-14 ans", #2 "15-24 ans", #3 "25-54 ans", #4 "55-64 ans", #5 "65 ans et plus", #6 "Retour au menu précédent", "Quitter l'application"] menu_act["actions"] = [ (lambda previous_menu :previous_menu["individu"].description('Classe des 0-14 ans',previous_menu)), (lambda previous_menu :previous_menu["individu"].description('Classe des 15-24 ans',previous_menu)), (lambda previous_menu :previous_menu["individu"].description('Classe des 25-54 ans',previous_menu)), # (lambda previous_menu :previous_menu["individu"].description('Classe des 55-64 ans',previous_menu)), (lambda previous_menu :previous_menu["individu"].description('Classe des plus de 65 ans',previous_menu)), menu_des, Individu().quitter] menu_act["path"] = [] return(Ouvert(menu_act))
def menu_resume(previous_menu): """Création du menu intermédaire pour l'affichage statistique Arguments: previous_menu {List} -- Menu précédent correspondant à l'utilisateur """ menu_act = {} menu_act["individu"] = menu_act["individu"] = previous_menu["individu"] menu_act["question"] = "L'affichage statistique permet de visualiser plusieurs informations \nQue voulez vous faire ?" menu_act["options"] = ["Afficher les pays dont le critère est le plus important", "Afficher les pays dont le critère est le moins important", #2 "Afficher les pays dont le critère dépasse un certain seuil", #3 "Afficher les pays dont le critère ne dépasse pas un certain seuil", #4 "Affichage de la répartition des classes d'âges", "Résumé statistique des critères", #5 "Retour au menu précédent", "Quitter l'application"] if previous_menu["individu"].type == "Administrateur": menu_act["actions"] = [ menu_tricrois, menu_tridecrois, menu_seuil_inf, menu_seuil_sup, # (lambda previous_menu :previous_menu["individu"].affichage_tableau_age(previous_menu)), menu_des, (lambda previous_menu :indices_actions(Admin(),[0,1,2,3,5,6,7,8,9,10])), Individu().quitter] else : menu_act["actions"] = [ menu_tricrois, menu_tridecrois, menu_seuil_inf, menu_seuil_sup, # (lambda previous_menu :previous_menu["individu"].affichage_tableau_age(previous_menu)), menu_des, (lambda previous_menu :indices_actions(DataScientist(),[0,1,2,3,4,8,9,10])), Individu().quitter] menu_act["path"] = [] return(Ouvert(menu_act))
def menu_seuil_sup(previous_menu): """Création du menu intermédaire pour la fonction du tri croissant Arguments: previous_menu {List} -- Menu précédent correspondant à l'utilisateur """ menu_act = {} menu_act["individu"] = menu_act["individu"] = previous_menu["individu"] menu_act[ "question"] = "Affichage des pays dont le critère ne depasse pas un certaint seuil \nSelectionnez le critère" menu_act["options"] = [ "Superficie", #2 "Population", #3 "Croissance démographique", #4 "Inflation", #5 "Dette", #6 "Taux de chômage", #7 "Taux de dépenses en santé", #8 "Taux de dépenses en éducation", #9 "Taux de dépenses militaires", "Classes d'âges", "Retour au menu principal", "Quitter l'application" ] menu_act["actions"] = [ (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( 'total', previous_menu)), (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( 'Population', previous_menu)), (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( 'Population growth rate', previous_menu)), # (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( 'Inflation rate (consumer prices)', previous_menu)), (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( 'Debt - external', previous_menu)), (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( 'Unemployment rate', previous_menu)), (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( 'Health expenditures', previous_menu)), (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( 'Education expenditures', previous_menu)), (lambda previous_menu: previous_menu["individu"].affichage_seuil_sup( 'Military expenditures', previous_menu)), menu_age_tricrois, menu_resume, Individu().quitter ] menu_act["path"] = [] return (Ouvert(menu_act))
def gestion_comptes(previous_menu): """Menu intermédiare permettant à l'utilisateur de choisir entre l'ajout et la suppression de comptes Arguments: previous_menu {List} -- Menu précédent correspondant à l'utilisateur """ menu_act = {} menu_act["individu"] = previous_menu["individu"] menu_act["question"] = "Que voulez vous faire ? " menu_act["options"] = ["Créer un compte Géographe/DataScientist", "Supprimer un compte ", "Retour au menu précédent", "Quitter l'application"] menu_act["actions"] = [ (lambda previous_menu :previous_menu["individu"].ajout_compte(previous_menu)), (lambda previous_menu :previous_menu["individu"].suppression_compte(previous_menu)), (lambda previous_menu :indices_actions(Admin(),[0,1,2,3,5,6,7,8,9,10])), Individu().quitter] menu_act["path"] = [] return(Ouvert(menu_act))
def menu_des(previous_menu): """Création du menu intermédaire pour la fonction de l'affichage du résumé statistique Arguments: previous_menu {List} -- Menu précédent correspondant à l'utilisateur """ menu_act = {} menu_act["individu"] = menu_act["individu"] = previous_menu["individu"] menu_act["question"] = "Vous allez visualiser les informations suivantes pour le critère sélectionné : \nNombre d'observations, moyenne, écart-type, min, max et quartiles. \nSelectionnez le critère" menu_act["options"] = ["Superficie", #2 "Population", #3 "Croissance démographique", #4 "Inflation", #5 "Dette", #6 "Taux de chômage", #7 "Taux de dépenses en santé", #8 "Taux de dépenses en éducation", #9 "Taux de dépenses militaires", "Classes d'âges", "Retour au menu précédent", "Quitter l'application"] menu_act["actions"] = [ (lambda previous_menu :previous_menu["individu"].description('Superficie',previous_menu)), (lambda previous_menu :previous_menu["individu"].description('Population',previous_menu)), (lambda previous_menu :previous_menu["individu"].description('Croissance démographique',previous_menu)), (lambda previous_menu :previous_menu["individu"].description('Inflation',previous_menu)), (lambda previous_menu :previous_menu["individu"].description('Dette',previous_menu)), (lambda previous_menu :previous_menu["individu"].description('Taux de chômage',previous_menu)), (lambda previous_menu :previous_menu["individu"].description('Taux de dépense en santé',previous_menu)), (lambda previous_menu :previous_menu["individu"].description('Taux de dépense en éducation',previous_menu)), (lambda previous_menu :previous_menu["individu"].description('Taux de dépense militaire',previous_menu)), menu_age_des, menu_resume, Individu().quitter] menu_act["path"] = [] return(Ouvert(menu_act))
{ "question": "Selectionnez votre type utilisateur", "options": [ "Consultant", "Géographe", "DataScientist", "Administrateur", "Quitter l'application" ], "actions": [(lambda previous_menu: indices_actions(Consultant(), [1, 4, 9, 10])), (lambda previous_menu: indices_actions(Geographe(), [0, 1, 5, 6, 9, 10])), (lambda previous_menu: indices_actions(DataScientist(), [0, 1, 2, 3, 4, 8, 9, 10])), (lambda previous_menu: indices_actions(Admin( ), [0, 1, 2, 3, 5, 6, 7, 8, 9, 10])), Individu().quitter], "individu": Individu(), "path": [] }, { "question": "Que voulez vous faire ? ", "options": [ "Connexion", #0 "Affichage de données pays", #1 "Représentation graphique", #2 Data "Résumés statistiques", #3 Data "Proposition suggestion", #4 "Gestion des pays", #5 "Gestion des suggestions", #6
(lambda previous_menu :previous_menu["individu"].description('Classe des 55-64 ans',previous_menu)), (lambda previous_menu :previous_menu["individu"].description('Classe des plus de 65 ans',previous_menu)), menu_des, Individu().quitter] menu_act["path"] = [] return(Ouvert(menu_act)) menu = [ { "question" : "Selectionnez votre type utilisateur", "options" : ["Consultant", "Géographe", "DataScientist", "Administrateur", "Quitter l'application"], "actions" : [ (lambda previous_menu :indices_actions(Consultant(),[1,4,9,10])), (lambda previous_menu :indices_actions(Geographe(),[0,1,5,6,9,10])), (lambda previous_menu :indices_actions(DataScientist(),[0,1,2,3,4,8,9,10])), (lambda previous_menu :indices_actions(Admin(),[0,1,2,3,5,6,7,8,9,10])), Individu().quitter], "individu": Individu(), "path": [] }, { "question" : "Que voulez vous faire ? ", "options" : ["Connexion", #0 "Affichage de données pays", #1 "Représentation graphique", #2 Data "Affichages statistiques", #3 Data "Proposition suggestion", #4 "Gestion des pays", #5 "Gestion des suggestions", #6 "Gestion des comptes",