Écrire un répertoire téléphonique en python

Bonjour,

Je dois coder un répertoire qui contient une fonction lirecontact qui affiche le contact de la ligne sélectionnée: 

fichier = open('repertoire.txt', 'w')
fichier.write("1/Dupont/Vincent/0623435564\n")
fichier.write("2/Martin/Claire/0767552134\n")
fichier.close()

Par exemple, si l'utilisateur inscrit "1" il sera affiché :

Nom: Dupont
Prénom: Vincent
Téléphone: 0623435564

Voici mon code:

fichier=open('repertoire.txt','w')
fichier.write("1/Dupont/Vincent/0623435564\n")
fichier.write("2/Martin/Claire/0767552134\n")
fichier.write("3/Petit/Pierre/0677564363\n")
fichier.write("4/Durant/Jérémy/0607785321\n")
fichier.write("5/Miller/Jhon/0788685423\n")
fichier.write("6/Fournier/Liz/0675564543\n")
fichier.write("7/Perrin/Adeline/0708586811\n")
fichier.write("8/Dumont/Carla/0584863519\n")
fichier.write("9/Collin/Marine/0785315964\n")
fichier.write("10/Chauvin/Patrick/0512689466\n")
fichier.close()

fichier=open('repertoire.txt','r')
for mot in fichier:
    print(mot.strip('\n'))
fichier.close()

def lecture (nomdufichier,n):
     fichier=open(nomdufichier,'r')
     for i in range(n):
         ligne=fichier.readline()
         ligne=ligne.strip('\n')
     fichier.close()
     return ligne

def lirecontact(ligne):
 #votre code ici
    i=0
    while ligne[i]!="/":
        i=i+1
    j=i+1
    while ligne[j]!="/":
        j=j+1
    print("Nom: "+ligne[i+1:j])
    k=j+1
    while ligne[k]!="/":
        k=k+1
    print("Prénom: "+ligne[j+1:k])
    print("Téléphone: "+ligne[k+1:])
fichier.close()

rep=input("lirecontact? (O/N)")
if rep in ('o','O'):
    print("test4")
    print(lirecontact(1))
    print(lirecontact(10))
    print(lirecontact(1)[0]) #n 'affiche que le nom
    print(lirecontact(5)[1]) #n 'affiche que le prenom
    print(lirecontact(3)[2]) #n 'affiche que le tel
    print(lirecontact(120)) #s'il n'y a pas 120  lignes, il doit gerer l'erreur

Si vous trouvez une solution, merci de m'en informer.

2 réponses

  1. La fonction lecture() lit les  n  premières lignes du fichier ...
    ... à condition qu'on écrive  range(n+1)
    car le nombre inscrit ne fait pas partie de l'intervalle pour range().
    Pour split(), ça n'est pas grave pour l'instant. Ce qui est là devrait fonctionner.

    1. D'après toi, que fait la fonction lecture() ? Où s'arrête un range() ?
      Pourquoi chercher les '|' ? Tu ne connais pas split() ?