Répertoire téléphonique

Cette formation aborde les bases de la programmation informatique.

Modérateur : Équipe sillages.info

thomas sabater
Messages : 2
Enregistré le : dim. 17 déc. 2017 20:19

Répertoire téléphonique

Messagepar thomas sabater » dim. 17 déc. 2017 20:47

Bonsoir, j’ai réaliser le répertoire téléphonique et il fonctionne très bien. Serait-il possible d’avoir une correction pour pour si j’aurais peut faire différemment ?
Il m’est impossible de vous joindre le fichier que j’ai réalisé car j’ai des problèmes de connexion. Dans l’attente d’une réponse de votre part,
Bonne soirée
Thomas

Gérard DOUYERE
Messages : 5
Enregistré le : lun. 18 déc. 2017 17:48

Re: Répertoire téléphonique

Messagepar Gérard DOUYERE » lun. 25 déc. 2017 18:52

Bonsoir Thomas,
Si cela peut t'intéresser, voici ma deuxième version du code.
La première était plus ambitieuse mais comportait également trop d'erreurs !
Entre temps j'ai découvert la commande .index() qui permet de récupérer l'indice d'une chaîne dans une liste. Très pratique pour obtenir le numéro de téléphone associé à un nom.

As-tu un meilleur score en nombre de lignes?
A + et bonnes fêtes !
gérard


def menu():
print('0. Quitter')
print('1. Ecrire dans le repetoire')
print('2. Rechercher dans le repertoire')
global choix
choix = raw_input('Votre choix ? : ')
choix = int(choix)
return choix

def ecriture():
nom=raw_input('Entrez un nom : ')
numero=raw_input('Entrez son numero de telephone : ')
monFichier=open('fichier.txt','a')
monFichier.write(nom)
monFichier.write('\n')
monFichier.write(numero)
monFichier.write('\n')
monFichier.close()
again=raw_input('Voulez-vous entrer un autre nom ? o/n')
if again=='o':
ecriture()


def lecture(x):
fichier=open('fichier.txt','r')
rep=[]

for ligne in fichier:
ligne=ligne.strip('\n')
rep.append(ligne)

if x in rep:
print('{0} est dans le repetoire, '.format(x)),
indice = rep.index(x)
print('son numero de telephone est {}'.format(rep[indice + 1]))

else:
again=raw_input('Ce nom n\'est pas au repertoire, voulez-vous le rentrer ? o/n')
if again=='o':
ecriture()

# Point d'entree du script

menu()
if (choix)==1:
ecriture()
elif (choix)==2:
nom_recherche=raw_input('quel nom recherchez-vous ? : ')
lecture(nom_recherche)
elif (choix)==0:
print('Bye bye so long boy')

thomas sabater
Messages : 2
Enregistré le : dim. 17 déc. 2017 20:19

Re: Répertoire téléphonique

Messagepar thomas sabater » dim. 31 déc. 2017 12:13

Bonjour Gérard,
Je trouve votre programme très intéressant et grâce à vous j'ai peut modifier mon programme qui est maintenant plus rapide.
juste un petit conseil si voulez gagner des liges:
Au lieu d'ecrire :
monFichier=open('fichier.txt','a')
monFichier.write(nom)
monFichier.write('\n')
monFichier.write(numero)
monFichier.write('\n')
monFichier.close()

Pourquoi ne pas écrire:
monFichier=open('fichier.txt','a')
monFichier.write(nom+'\n')
monFichier.write(numero+'\n')
monFichier.close()

J'espère que mon conseil vous sera utile :D, Bonnes fêtes
Thomas

Gérard DOUYERE
Messages : 5
Enregistré le : lun. 18 déc. 2017 17:48

Re: Répertoire téléphonique

Messagepar Gérard DOUYERE » dim. 31 déc. 2017 13:26

Merci pour ta réponse et les conseils de concatenation de lignes.
Je viens de terminer le script du QCM.
Qui aurait envie de comparer avec le sien ?
Cordialement à tous.

Marie Feuillassier
Messages : 2
Enregistré le : sam. 5 mai 2018 18:36

Re: Répertoire téléphonique

Messagepar Marie Feuillassier » sam. 5 mai 2018 18:39

Bonjour,
Voici mon programme pour le répertoire téléphonique. Le hic est que je n'arrive pas à répondre que le contact est inconnu car dans la boucle for de la fonction lecture, il met autant de "contact inconnu" que de lignes à lire. Ainsi j'ai retiré cette option.

def menu():
print("0-quitter");
print("1-écrire dans le répertoire");
print("2-rechercher dans le répertoire");
global x
x=raw_input("Quel est votre choix: ")
x=int(x)
return x
def ecriture():
nom=raw_input("entrer un nom: ");
prenom=raw_input("entrer un prénom: ");
numero=raw_input("entrer un numéro de téléphone: ");
fichier=open('répertoire téléphonique','a');
fichier.write(nom+" "+prenom+" "+numero+"\n");
fichier.close();
print('contact enregistré')
again=raw_input("voulez-vous entrer un autre contact? Répondez par oui ou non en minuscules: ")
if again=="oui":
ecriture()
else:
menu()
def lecture():
recherche=raw_input("quel nom du répertoire cherchez-vous?: ");
fichier=open('répertoire téléphonique',"r")
for line in fichier:
if recherche in line:
print(line)
encore=raw_input("voulez-vous rechercher une autre personne? Répondez par oui ou non en minuscules: ")
if encore=="oui":
lecture()
else:
menu()
def exercice():
while x>=0:
if x==0:
menu()
elif x==1:
ecriture()
else:
lecture()
menu()
exercice()

Luciad46
Messages : 1
Enregistré le : lun. 9 sept. 2019 16:26

Re: Répertoire téléphonique

Messagepar Luciad46 » lun. 9 sept. 2019 16:30

thomas sabater a écrit :Bonjour Gérard,
Je trouve votre programme très intéressant et grâce à vous j'ai peut modifier mon programme qui est maintenant plus rapide mutuelle senior.
juste un petit conseil si voulez gagner des liges:
Au lieu d'ecrire :
monFichier=open('fichier.txt','a')
monFichier.write(nom)
monFichier.write('\n')
monFichier.write(numero)
monFichier.write('\n')
monFichier.close()

Pourquoi ne pas écrire:
monFichier=open('fichier.txt','a')
monFichier.write(nom+'\n')
monFichier.write(numero+'\n')
monFichier.close()

J'espère que mon conseil vous sera utile :D, Bonnes fêtes
Thomas

Très intéressant, mais plutôt compliqué aussi car je l'utilise pour des logiciels d'état civil et ce n'est en aucun cas de tarte.

Sylvain GHIRARDOTTO
Messages : 1
Enregistré le : lun. 23 mars 2020 13:44

Re: Répertoire téléphonique

Messagepar Sylvain GHIRARDOTTO » mar. 24 mars 2020 10:55

Bonjour,

Je suis en train de suivre le MOOC : Programmation en Python pour débutants.
Je remercie David Roche pour la création et son temps.

Je suis sur l'exercice de création du répertoire et j'effectue des recherches complémentaires pour mener à bien ce projet.

Les réponses précédentes inclus notamment certaines notions qui n'ont pas été vues lors des leçons précédentes, est-ce normal?
les thermes "global" "raw_input" n'ont pas été vus dans le cours. J'imagine que raw_input = input sur la version 3 de Python.

Je veux bien un coup de main sur cet exercice car entre les fonctions non vues / non maitrisées, je m'en sors pas :

def menu():
print("0-quitter")
print("1-écrire dans le répertoire")
print("2-Rechercher dans le répertoire")
print("Votre choix ?")
global choix
choix = input('Votre choix ? : ')
choix = int(choix)
return choix

def ecriture():
if choix == 1:
nom = input("Nom (0 pour terminer) :")
numero = input("Téléphone :")
while nom != 0:
with open("repertoire.txt", "a") as f:
f.write(nom + " " + numero + "\n")
repertoire.close()

def lecture():
if choix == 2:
recherche = input("Entrer un nom")
with open("repertoire.txt", "r") as f:
ligne = f.read


Oui le programme n'est pas terminé, je viens de passer 2h30 dessus et j'ai de gros doutes si je prends la bonne direction avec mes boucles étant donné que les corrections précédentes ne partaient pas sur les mêmes bases.

Qu'en pensez-vous?

MErci !

Sylvain

Cédric Frédéric
Messages : 1
Enregistré le : mer. 29 avr. 2020 17:10

Re: Répertoire téléphonique

Messagepar Cédric Frédéric » mer. 29 avr. 2020 17:16

Bonjour,

je pense être venu à bout de ce premier exercice, et j'aurais besoin de vérifier / consolider mon code.
Sylvain désolé d'arriver avec 1 mois de retard, mais çà pourrait t'aider si tu n'as pas eu de réponse depuis :)

def menu():
x = input ("0-Quitter \n1-Ecrire dans le répertoire \n2-Rechercher dans le répertoire \nVotre choix?\n")
if x == str(1):
ecriture()
elif x == str(2):
lecture()
elif x == str(0):
print ('sortie du programme')
return
else:
menu()

def ecriture():
reponse1 = input ("Veuillez saisir un nom \nSinon taper 0 pour revenir au menu\n")
if reponse1 == str(0):
print("retour au menu principal")
menu()
else :
print ("OK pour la première question, le nom est",reponse1)
reponse2 = input ("Veuillez saisir un numéro \nSinon taper 0 pour revenir au menu\n")
if reponse2 == str(0):
print("retour au menu principal")
menu()
else:
print ("OK pour la deuxième question, le numéro est",reponse2)
texte = reponse1 + "\n" + reponse2 + "\n"
with open('repertoire.txt','a') as f:
f.write(texte)
menu()

def lecture():
nom = input ("entrez un nom \n")
annuaire=[]
with open('repertoire.txt', 'r') as f:
#remplit le tableau
for ligne in f:
ligne=ligne.replace("\n","")
annuaire.append(ligne)
#recherche le nom dans le tableau
if nom in annuaire :
#affiche le numéro du contact
element_numero = annuaire.index(nom)+1
print (f"le numéro de {nom} est {annuaire[element_numero]}")
else:
print ("ce contact n'existe pas")

menu()
menu()

Merci d'avance pour vos commentaires :)

Cédric


Retourner vers « Programmation en Python »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité