Aide - Exercice programmation dictionnaire
Résolu
bcleo
-
latata -
latata -
Bonjour, J'ai un exercice a effectuer en Python 2.7, voici la consigne:
On veut entrée des données relatifs à 5souris males et 5 souris femelles. Ces souris sont soumises a des test : le temps qu'ils mettent à sortir du labyrinthe pour les males et nombre de fois que les souris sont sorties d'une piscine pour les femelles. Et cela pendant 5 jours. Le prof veut ensuite qu'on stock les valeurs dans des dictionnaires. (nom, sexe, poid au debut, performance (piscine et laby), poid au bout des 5 j). l'exercice s'organise sous forme de menu dans lequelle on choisie quelles infos on veut entrer.
Mais j'ai un soucis : je voudrais créer un dictionnaire pour chaque souris comme ci dessous:
dict_souris1={nom=lili, poid=5, sexe=F, perfo=oui}; j'ai donc crée une boucle, mais a chaque fois que j'entre les données de la 2eme souris, les données de la 1ere souris en sont remplacés. Je ne sais pas trop comment faire pour par exemple créer une nouveaux dictionnaire a chaque itération.
EN espérant que quelqu'un puisse gentiment m'aider
Bien à vous
Voici mon code : (nbr représente le nombre de jour, ici je n'ai mis que 2 pour ne pas perdre mon temps quand je teste le script)
On veut entrée des données relatifs à 5souris males et 5 souris femelles. Ces souris sont soumises a des test : le temps qu'ils mettent à sortir du labyrinthe pour les males et nombre de fois que les souris sont sorties d'une piscine pour les femelles. Et cela pendant 5 jours. Le prof veut ensuite qu'on stock les valeurs dans des dictionnaires. (nom, sexe, poid au debut, performance (piscine et laby), poid au bout des 5 j). l'exercice s'organise sous forme de menu dans lequelle on choisie quelles infos on veut entrer.
Mais j'ai un soucis : je voudrais créer un dictionnaire pour chaque souris comme ci dessous:
dict_souris1={nom=lili, poid=5, sexe=F, perfo=oui}; j'ai donc crée une boucle, mais a chaque fois que j'entre les données de la 2eme souris, les données de la 1ere souris en sont remplacés. Je ne sais pas trop comment faire pour par exemple créer une nouveaux dictionnaire a chaque itération.
EN espérant que quelqu'un puisse gentiment m'aider
Bien à vous
Voici mon code : (nbr représente le nombre de jour, ici je n'ai mis que 2 pour ne pas perdre mon temps quand je teste le script)
def entreedonnee(dicosouris): nbr=2 for i in range(nbr): print "quelle est le nom de la souris",i nom=raw_input() print "quelle est le poid de cette souris" poid=input() dicosouris[nom]=dicopara print "quelle est le sexe : " sexe=raw_input() dicopara["sexe"]=sexe dicopara["poid"]=poid return def perfomal(dicosouris): jour=5 listtemps=[] for i in dicosouris.keys(): if (dicopara["sexe"]=="male"): for j in range(jour): print "quel est le temps total ce jour",j," de la souris",i temps=input() dicopara["temps"]=listtemps listtemps.append(temps) print dicosouris return def perfofem(dicosouris): jour=5 listsortie=[] for i in dicosouris.keys(): if (dicopara["sexe"]=="femelle"): for j in range(jour): print "la souris",i,"est elle sortie du laby le jour", j sortie=raw_input() dicopara["sortie"]=listsortie listsortie.append(sortie) print dicosouris return def perfofem(dicosouris): jour=5 nbrsortie=0 listsortie=[] for value in dicosexe.values(): if "femelle" in dicosexe.values(): for i in range(jour): print"est elle sortie de la piscine?" nbrsortie=raw_input() listsortie.append(nbrsortie) dicosortie[nbrsortie]=listsortie dicosouris[nom]=[dicopoid,dicosexe,dicosortie] return def affiche(dicosouris): for cle in dicosouris.values(): print "la souris",cle,"a le poid de", dicopara["poid"],"il s'agit d'une",dicopara["sexe"] def meilleurtemps(dicosouris): Dico=dicosouris.keys() max=Dico[0] for cle in Dico: if (dicopara["sexe"]=="male"): if max<dicosouris[cle]: max=cle print max def poidsfin(dicopoidfin): for cle in dicosouris.keys(): print "quelle est le poid finale de la souris",cle dicopara["poidfin"]=input() print dicosouris def menu(): print"Taper 1 pour entrer le nom poids du premier jour, sexe" print"Taper 11 pour entrer les performances des males" print"Taper 12 pour entrer les performances des femelles" print"Taper 2 pour afficher" print"Taper 3 pour connaitre le meilleure temps pour les males" print"Taper 4 pour savoir quelle femelle a le meilleur score" print"Taper 5 pour entrer le poid en fin d'experience" dicosouris={} dicopara={} jour=2 nom="" poid=0 sexe="" while(True): menu() print "quelle est ton choix" choix=input() if choix==0: break elif choix==1: entreedonnee(dicosouris) elif choix==11: perfomal(dicosouris) elif choix==12: perfofem(dicosouris) elif choix==2: affiche(dicosouris) elif choix==3: meilleurtemps(dicosouris) elif choix==4: meilleurtemps(dicosouris) elif choix==5: poidsfin(dicosouris)
Configuration: Linux / Firefox 59.0
A voir également:
- Aide - Exercice programmation dictionnaire
- Télécharger dictionnaire larousse pdf gratuit - Télécharger - Dictionnaires & Langues
- Télécharger dictionnaire médical larousse gratuit pdf - Télécharger - Dictionnaires & Langues
- Application de programmation - Guide
- Dictionnaire synonyme gratuit - Télécharger - Études & Formations
- Télécharger dictionnaire informatique gratuit pdf - Télécharger - Bureautique
2 réponses
Bonjour,
Je m'interroge sur le sens du mot dictionnaire. Il ne me viendrait pas l'esprit de programmer une saisie de données et de ne les conserver que dans un tableau mémoire. Je stockerais les données dans un fichier (ou une bdd), pour les conserver et les réutiliser.
Cdlt
Je m'interroge sur le sens du mot dictionnaire. Il ne me viendrait pas l'esprit de programmer une saisie de données et de ne les conserver que dans un tableau mémoire. Je stockerais les données dans un fichier (ou une bdd), pour les conserver et les réutiliser.
Cdlt
Bonsoir.
Lorsque tu fais
Donc, il faut revoir ce qu'il se passe dans cette fonction, en créant un dict pour chaque souris créée.
Il faut donc revoir aussi (entre autres) la fonction d'affichage qui devra être modifiée ainsi.
Le dict global dicopara n'a donc plus raison d'exister, tu peux l'enlever de ton code ;-)
Lorsque tu fais
dicosouris[nom]=dicoparadans ta fonction
entreedonnee, tous les dictionnaires créés pointent sur le même dictionnaire (dicopara).
Donc, il faut revoir ce qu'il se passe dans cette fonction, en créant un dict pour chaque souris créée.
def entreedonnee(dicosouris): nbr=2 for i in range(nbr): print "quelle est le nom de la souris",i nom=raw_input() print "quelle est le poid de cette souris" poid=input() # dicosouris[nom]=dicopara dicosouris[nom] = dict() print "quelle est le sexe : " sexe=raw_input() dicosouris[nom]["sexe"] = sexe dicosouris[nom]["poid"] = poid return
Il faut donc revoir aussi (entre autres) la fonction d'affichage qui devra être modifiée ainsi.
def affiche(dicosouris): for cle, dico in dicosouris.items(): print "la souris",cle,"a le poid de", dico["poid"],"il s'agit d'une",dico["sexe"]
Le dict global dicopara n'a donc plus raison d'exister, tu peux l'enlever de ton code ;-)
J'ai juste une autre petite question qui n'a pas de lien avec les dictionnaires mais j'ai vraiment du mal à assimiler cette notion :
dans les definition de fonctions, les paramètres entre parenthèse sont necessaire afin de donner les valeur necessaire au deroulement de la fonction c'est bien ça ?
Et le return seul sert bien a stoppé la fonction, et le return avec des arguments cette a renvoyer la valeur de la variable ?
En esperant que vous puissiez me repondre :)
dans les definition de fonctions, les paramètres entre parenthèse sont necessaire afin de donner les valeur necessaire au deroulement de la fonction c'est bien ça ?
Et le return seul sert bien a stoppé la fonction, et le return avec des arguments cette a renvoyer la valeur de la variable ?
En esperant que vous puissiez me repondre :)
Bonjour,
dans les definition de fonctions, les paramètres entre parenthèse sont necessaire afin de donner les valeur necessaire au deroulement de la fonction c'est bien ça ?
Oui, c'est ça, on peut aussi définir des paramètres optionnels (ayant une valeur par défaut).
Et le return seul sert bien a stoppé la fonction, et le return avec des arguments cette a renvoyer la valeur de la variable ?
Mettre un return sans valeur derrière équivaut à faire
Oui, un return met fin à l'exécution de la fonction, et même d'une boucle dans le cas ou fait un return dans une boucle située dans une fonction.
Note qu'il est inutile de mettre un return sans rien en fin d'une fonction, python retourne None par défaut.
dans les definition de fonctions, les paramètres entre parenthèse sont necessaire afin de donner les valeur necessaire au deroulement de la fonction c'est bien ça ?
Oui, c'est ça, on peut aussi définir des paramètres optionnels (ayant une valeur par défaut).
Et le return seul sert bien a stoppé la fonction, et le return avec des arguments cette a renvoyer la valeur de la variable ?
Mettre un return sans valeur derrière équivaut à faire
return Nonesinon oui c'est l'objet stipulé à la suite qui sera renvoyé.
Oui, un return met fin à l'exécution de la fonction, et même d'une boucle dans le cas ou fait un return dans une boucle située dans une fonction.
Note qu'il est inutile de mettre un return sans rien en fin d'une fonction, python retourne None par défaut.
Oui biensur, jattends de résoudre mon problème avant d'écrire les commandes pour tout stocker dans un fichier, ce script n'est pas fini du tout.
Bien à vous
J'ai avec un bout de ton code effectué des essais
Dans dicosouris on récupère bien les infos des 2 souris. Je ne pige pas bien la structure que tu cherches au final, mais le dictionnaire pourrait aussi contenir