Mini repertoire

Fermé
roro - 7 nov. 2020 à 10:04
 Utilisateur anonyme - 8 nov. 2020 à 12:08
Bonjour,
j ai un projet de mini repertoire assez dur pour mon niveau. 1ere NSI
je suis bloquer pour modifier une personne et voici mon programme
repertoire=[]

#sélectionner dans le menu
print("1-Ajouter une personne 2-Modifier une personne 3-Supprimer une personne 4-Quitter le programme")
choix=int(input("Quel numéro choisissez-vous ?"))

if choix==1:

personne1 = {}# creation du dico

personne1["nom"]=str(input("saisir un nom:"))

personne1["prenom"]=str(input("saisir un prenom:"))

personne1["num"]=str(input("saisir un numero:"))

repertoire.append(personne1)# ajout d'un element

print(repertoire)

elif choix==2:

changer=str(input("quel contact voulez vous modifier ?"))

changerquoi=str(input(" tapez 4 pour modifier le nom! tapez 5 pour modifier le prenom! tapez 6 pour modifier le numero!"))
L'objectif est de créer un répertoire dans lequel on mémorise le nom, le prénom et le numéro de téléphone.

Les informations sont mémorisées dans une liste de dictionnaire.

Au lancement du programme, l'agenda est vide et un menu permet à l'utilisateur d'ajouter, modifier ou supprimer une personne.

Après chaque traitement (ajouter, modifier et supprimer) l'agenda doit être affiché de nouveau.

Le schéma suivant détaille chaque partie du programme :

mini projet agenda cdcf1

Conseil de méthode :

- y aller pas à pas :

- mettre au point en premier ajouter une personne, puis passer à modifier...

- terminer par le menu

- rendre explicite votre programme pour un tiers :

- mettre des commentaires

- choisir des noms de variables explicites

- utiliser des fonctions pour structurer votre programme

- séparer les différentes parties par une ligne : #------------------------------------------------

Étape 1

Dans un premier temps vous répondez au cahier des charges en supposant que l'utilisateur est parfait : il saisit toujours les bonnes informations.

Il n'y a donc pas à vérifier par exemple si le n° de menu ou de personne est correct.

Étape 2

De nombreuses améliorations sont possibles, voici le cadre de ce que vous pouvez faire.

Pour l'affichage

- Juste avant d’afficher la liste des personnes, afficher le nombre de personnes - ex: 3 personnes

- Tester si l'agenda est vide, auquel cas afficher le message “L'agenda est vide”

Pour supprimer une personne

- tester le cas où la liste est vide, auquel cas afficher “aucun élève à supprimer, la classe est vide”

- tester le cas où le n° donné est négatif ou trop grand : afficher un message en conséquence

Pour modifier une personne par son nom

Afin de conserver votre première étape (modifier une personne par son n° d'indice), vous ajouterez un menu 4 afin de modifier une personne par son nom :

- demander à l'utilisateur de saisir un nom,

- le programme recherche la personne dans l'agenda

- si elle est trouvée : reprendre ce que vous aviez fait à l'étape 1

- si elle n’a pas été trouvée : afficher le message “nom personne inexistante dans l'agenda".




Configuration: Windows / Chrome 86.0.4240.111
A voir également:

53 réponses

Utilisateur anonyme
7 nov. 2020 à 14:33
Alors essayons autrement (à noter que je préfère largement "je ne sais pas" à une réponse au hasard)

def ajouterunepersonne():
  nomcontact1=str(input("saisir un nom"))
  prenomcontact1=str(input("saisir un prenom"))
  numerocontact1=int(input("saisir un num "))
  return(nomcontact1,prenomcontact1,numerocontact1)
 

def ajouterunepersonne2():
  nomcontact2=str(input("saisir un nom"))
  prenomcontact2=str(input("saisir un prenom"))
  numerocontact2=int(input("saisir un num "))
  return(nomcontact2,prenomcontact2,numerocontact2)


def ajouterunepersonne3():
  nomcontact3=str(input("saisir un nom"))
  prenomcontact3=str(input("saisir un prenom"))
  numerocontact3=int(input("saisir un num "))
  return(nomcontact3,prenomcontact3,numerocontact3)

ajouterunepersonne()
ajouterunepersonne2()
ajouterunepersonne3()


D'abord, il manquait les parenthèses pour l'appel des fonctions, je l'ai corrigé dans le code de ce message.

Ce code définit 3 fonctions qui font la même chose.
Ces 3 fonctions sont appelées successivement.

Supposons que tu doives presser 3 oranges, utilises tu 3 presses agrumes?
0
non 1 seul presse agrume
0
Utilisateur anonyme
7 nov. 2020 à 14:39
Dans cette même optique, peux tu optimiser ton code?
0
def ajouterunepersonne():
  nomcontact=str(input("saisir un nom"))
  prenomcontact=str(input("saisir un prenom"))
  numerocontact=int(input("saisir un num "))
  nomcontact1=str(input("saisir un nom"))
  prenomcontact1=str(input("saisir un prenom"))
  numerocontact1=int(input("saisir un num "))
  nomcontact2=str(input("saisir un nom"))
  prenomcontact2=str(input("saisir un prenom"))
  numerocontact2=int(input("saisir un num "))
  return(nomcontact,prenomcontact,numerocontact,nomcontact1,prenomcontact1,numerocontact1,nomcontact2,prenomcontact2,numerocontact2)

ajouterunepersonne()

il n y a pas un moyen de mettre chaque contact dans une sorte de classement contact1:nom,prenom,num, contact2:nom,prenom,num
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
7 nov. 2020 à 14:54
il n y a pas un moyen de mettre chaque contact dans une sorte de classement


ben si et paradoxalement, en faisant ton exercice à "l'envers" tu en était plus proche que maintenant.

la fonction ajouterunepersonne porte bien son nom. Si elle en ajoute 2, elle n'est pas cohérente.
Et quand tu auras besoin de n'ajouter qu'une seule personne, elle ne sera pas adatpée.

Un fonction c'est un bout de code qui sert à faire quelque chose.
Tout comme le presse agrume sert à presser un agrume. Cela dit le presse agrume peut servir plusieurs fois.
Vois tu ce que j'essaye de te faire comprendre?

0
oui il faut essayer de reutiliser les fonctions le nombre de fois que l on veut ajouter des personnes dans le repertoire
0
Utilisateur anonyme
7 nov. 2020 à 15:01
Exactement.

Donc maintenant, montre moi un code, qui ajoute 3 personnes dans le repertoire.
0
repertoire=[]
def ajouterunepersonne():
  contact1 = {}# creation du dico

  contact1["nom"]=str(input("saisir un nom:"))

  contact1["prenom"]=str(input("saisir un prenom:"))

  contact1["num"]=str(input("saisir un numero:"))

  repertoire.append(contact1)# ajout d'un element

  print(repertoire)

ajouterunepersonne()
ajouterunepersonne()
ajouterunepersonne()

j ai bien compris je crois
0
Utilisateur anonyme
7 nov. 2020 à 15:11
Parfait.

C'est exactement ça, et aussi exactement ce que ton prof veut dire pas "y aller petit à petit".

Tu viens à la fois d'écrire une fonction qui ajoute une personne, de la tester (puisque tu l'appelles) et de t'en servir un nombre de fois prédéfini.

Maintenant, ton dictionnaire contient 3 personnes.

Tu dois en modifier 1, pour cela il y a 2 grandes étapes.
Vois tu les quelles?
0
il faut observer le repertoire selectionner l'element a modifier puis supprimer et ajouer l'element correctement ecrit
0
Utilisateur anonyme
7 nov. 2020 à 15:28
Là c'est en 3 étapes.

on peut réduire à
  • sélectionner l'élément
  • le modifier


Commençons par la fonction qui sert à sélectionner un contact.
Tu vas essayer d'écrire cette fonction, et l'appeler à la suite des 3 saisies
Après cet appel le contact sélectionné sera affiché
0
repertoire=[]
def ajouterunepersonne():
  contact1 = {}# creation du dico

  contact1["nom"]=str(input("saisir un nom:"))

  contact1["prenom"]=str(input("saisir un prenom:"))

  contact1["num"]=str(input("saisir un numero:"))

  repertoire.append(contact1)# ajout d'un element

  print(repertoire)

ajouterunepersonne()
ajouterunepersonne()
ajouterunepersonne()


def modifierunepersonne():
  print(repertoire)
  repertoire.get('nom')

modifierunepersonne()

je vois comment le faire on la traviller en cours mais je ne sait pas l appliquer.
est ce bon
0
Utilisateur anonyme
7 nov. 2020 à 15:51
Par soucis de clarté , on regroupe les définitions d'un coté et le code "principal"

Là ça fait
  • une définition
  • un peu de code principal
  • une définition
  • un peu de code principal


Quand tu en auras 50 de chaque, ce sera complètement illisible.
D'ailleurs dans ton énoncé, il t'est demandé de bien séparer chaque partie du programme.

Ensuite, je t'ai demandé de travailler sur la fonction qui sélectionne un contact, l'appeler modifierunepersonne n'est pas cohérent avec son but.

Enfin, quel est le type de repertoire? La fonction get existe t elle pour ce type?
0
c un tableau de dictionnaire
0
Utilisateur anonyme
7 nov. 2020 à 15:55
Tableau, non, une liste plutôt.
Get existe t elle dans une liste?
0
non
0
Utilisateur anonyme
7 nov. 2020 à 15:57
alors comment peux tu sélectionner un contact dans répertoire?
0
avec repertoire[0]
0
mais je ne vois pas comment l inserer dans la fonction
0
Utilisateur anonyme
7 nov. 2020 à 16:01
donc avec son index.

C'est une façon de faire.

La fonction doit donc demander l'index du contact à modifier et faire en sorte que le code principal affiche le contact.

Que me propose tu?
0
def selectionnerunepersonne():
  print(repertoire)
  index = repertoire.index('e')
print('The index of nom:', index)

je ne sais pas trop
0