Quand tu écris :
1 2 3 4 5
| def chercher_nom(phone):
for l in liste_contact:
nom, tel = liste
if tel == phone:
return nom |
la variable "liste", elle vient d'ou ? Ce serait pas plutot le "l" que tu obtiens en parcourant liste_contact ?
D'ailleurs par souci de lisibilité on écrirait plutot
for contact in liste_contact
Ensuite, si tu écris
Normal que ca ne marche pas. Ca marcherait si contact était un tuple ou une liste de longueur 2. Là c'est pas du tout le cas, c'est un objet de type Contact ! Ne te complique donc pas la vie :
1 2 3 4 5 6 7 8
|
def chercher_nom(phone):
result = None #### Il faut que ta fonction retourne qqch meme si elle n'a trouvé aucune correspondance !
for contact in liste_contact:
if contact.tel == phone:
result = contact.nom
break #### On peut arreter la boucle ici, puisqu'on a trouvé une correspondance
return result |
Outre ces points là, il y a de sérieux problème de hierarchisation. La classe Contact, ok bien, c'est un bon début. Par contre la variable Liste_contact, non ca c'est pas une bonne idée. Fait tois une classe Carnet_d_adresse, dont le principal attribut sera une liste de Contact.
Une fois que tu as découper comme ca, tu vois bien que les méthodes pour ajouter ou supprimer des contacts dans la liste des contacts n'ont rien à faire dans la classe Contact ! De même pour l'affichage de tous les contacts !
Partager