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

Fermé
najet - Modifié le 24 févr. 2023 à 03:58
 PierrotLeFou - 17 févr. 2023 à 00:49

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.

A voir également:

2 réponses

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

0

Non

0

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.

0