IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

[MINI-PROJET] Repertoire telephonique sous python


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Par défaut [MINI-PROJET] Repertoire telephonique sous python
    Bonjour à tous, avant toute chose je m'excuse si je ne suis pas dans la bonne section je suis tout nouveau sur le site et je m'y perd un petit peu !

    Voila donc je suis en terminale S et j'ai pris l'option ISN ce qui me convient a ravir car j'aimerai faire de la programmation pure et dur après le BAC !
    Cependant comprenez qu'on débute tous, et on ne peux généralement pas y arriver seul :/
    J'ai eu comme projet de faire un répertoire téléphone dans lequel on avait 3 choix :
    1) crée le repertoire avec demande du nom et du numéro => ( dans le fichier .txt tout s'écrit parfaitement )
    2) rechercher un numéro d'une personne en rentrant son nom ! ( on rentre son nom et l'algo nous ressort le numéro qui a noter précédemment a l'aide de l'option un )
    3) Quitter/ relancer la question


    Je m'en suis pas trop mal soucis mais il y a 4 petits détails qui me gène dont un qui bloque la "réussite" du programme.
    Mes ennuis sont :

    - Si on écrit des lettres et non des chiffres a la question de départ
    il repose la question.


    - Si on écrit des lettres sur "Numéro :" => erreur + repose la question



    - Si on écrit des chiffres sur "Nom : " => erreur + repose la question

    - rectifier la boucle option 2 ==> Je m'explique, je connais mon erreur mais je ne sais la résoudre.. Disons que je rentre dans l'option une, 5 numéro avec 5 noms différents. Et bien dans l'option 2 je veux le numéro de la 3ème personne enregistré, j'entre donc son nom, et PAF ! L'algo me ressort le numéro mais celui que j'ai enregistré en DERNIER et non celui qui correspond au nom de la personne. Je sais aussi ou est mon erreur c'est le " print(numero)" vers la l32...

    Voila un screen de mon alo tel qu'elle =>
    http://gyazo.com/358dfb44903ac5ddf82fa9804ffe4746

    L'option 1 =>
    http://gyazo.com/64e18c9954a980a67395d55d8b6ff514

    Dans le fichier .txt suite a cela =>
    http://gyazo.com/89e481e016c5ecb8c4ddecb706756177

    Et voici donc l'erreur =>
    http://gyazo.com/e3978d679c4fb8c39e3acee6153fc09e

    En espérant avoir été clair et recevoir un peu d'aide merci !!

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Bonsoir,
    Déjà, si tu veux des réponses, il va falloir utiliser les balises de code (#) parce qu'aller chercher tous les fichiers un par un, c'est un peu lourd : les intervenants ont en principe une famille, un boulot, ... bref de quoi s'occuper largement.
    Sans méchanceté aucune, tu es nouveau sur le forum mais il y a des règles.
    Cordialement.

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Par défaut
    D'accord je veux bien mais que veut tu dire en disant 'aller chercher les fichiers un par un' ?
    Tenez mon programme directement si cela est plus simple pour vous !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    MENU=int(input("Saisir 1 pour ecrire un repertoire, 2 pour rechercher un numéro et 0 pour quitter : "))
    a=1
    while a==1:
        while MENU==1:
            numero=input("Entrer un numéro : ")
            monFichier=open('fichier.txt','a')
            monFichier.write("Le numéro : ")
            monFichier.write(numero)
            monFichier.write("\n")
            monFichier.close()
            print('Numéro Enregistré')
     
            print("")
     
            nom=input("Entrer un nom maintenant : ")
            monFichier=open('fichier.txt','a')
            monFichier.write("Nom : ")
            monFichier.write(nom)
            monFichier.write("\n")
            monFichier.write("\n")
            monFichier.close()
            print('Nom enregistré')
            MENU=int(input("Saisir 1 pour ecrire un repertoire, 2 pour rechercher un numéro et 0 pour quitter : "))
     
        while MENU==2:
     
            recherche=input("Entrer le nom de la personne : ")
            monFichier=open('fichier.txt','a')
            monFichier.write(recherche)
            monFichier.write("\n")
            monFichier.close()
            print(numero)
            MENU=int(input("Saisir 1 pour ecrire un repertoire, 2 pour rechercher un numéro et 0 pour quitter : "))
        while MENU==0:
     
            MENU=int(input("Saisir 1 pour ecrire un repertoire, 2 pour rechercher un numéro et 0 pour quitter : "))
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 787
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 787
    Par défaut
    Salut,

    Il est plus simple de lire le code dans le message que d'aller le récupérer en attachement.
    J'ai modifié message pour y inclure le code.
    Et désolé pour les garbages sur les caractères accentués.
    Bon courage.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 071
    Par défaut
    Tu peux expliquer ligne par ligne ce qui se passe dans while MENU==2 ?

  6. #6
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Par défaut
    Dans le while MENU==2 je sais que c'est celui qui plante :/ alors :


    recherche=input("Entrer le nom de la personne : ") # Le programme doit rechercher dans le fichier .txt la personne que l'utilisateur rentre dont son numéro est associé.

    monFichier=open('fichier.txt','a') #Il ouvre mon fichier texte
    monFichier.write(recherche) #C'est ici qu'il recherche le nom de la personne
    monFichier.write("\n") #Saut de ligne tout simplement
    monFichier.close() #Il ferme le fichier texte
    print(numero) #Il doit alors afficher le numéro de la personne qui correspond a celui dans le fichier texte mais ce n'est pas le cas.

  7. #7
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Deux remarques :
    Quand tu écris "write", tu écris dans le fichier. Est-ce que tu veux dans "recherche" ?
    - Un fichier csv ne serait-il pas plus approprié de façon à pouvoir extraire le numéro dans une des colonnes ?

  8. #8
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Le souci ici, c'est que tu n'as pas de fonction de recherche.

  9. #9
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 22
    Par défaut
    Qu'est ce qu'un fichier csv ? Je ne pense pas car dans l'énoncé c'est bien dans un fichier .txt !

    Oui je sais que l'a est le soucis mais je ne sais pas du tout comment procédé :/

  10. #10
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 159
    Par défaut
    Pourquoi ne pas commencer à se simplifier la vie pour que la recherche soit simple.

    Pour le 1 - Ajout dans répertoire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> nom = input("Entrer un nom maintenant : ")
    Entrer un nom maintenant : tartanpion
    >>> numero = input("Entrer un numéro : ")
    Entrer un numéro : 0256896321
    >>> ';'.join([nom, numero])
    'tartanpion;0256896321'
    Pour le 2- Recherche dans le répertoire, il faut lire le fichier, non écrire dedans...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    f = open('fichier.txt', 'r')
    for line in f:
        if line:
            # suite du code
    Ensuite il faut déjà travailler sur la boucle, dans ton cas, mieux vaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    choice = int(input('Entrer votre choix: '))
    while choice != 0 and choice in (1, 2):
        # suite code
        choice = int(input('Entrer votre choix: ')) # juste à la fin de tout traitement

  11. #11
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 856
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par rubisom Voir le message
    Qu'est ce qu'un fichier csv ? Je ne pense pas car dans l'énoncé c'est bien dans un fichier .txt !
    Bonjour

    Un fichier csv est un fichier texte mais où chaque champ est séparé du suivant par un caractère très particulier (de ton choix). Dans 90% des cas on utilise le ";". C'est pas très difficile à lire avec les yeux si tu dois vérifier son contenu et ça t'aide si tu dois programmer un code pour le traiter (suffit de te caler sur ce caractère pour trouver quel est quel champ).
    Bref t'as tout à fait le droit de l'utiliser...

    Citation Envoyé par rubisom Voir le message
    Oui je sais que est le soucis mais je ne sais pas du tout comment procéder :/
    Ben peut-être commencer par réfléchir à ce qu'est un répertoire. Parce qu'en lisant ton code, je vois que tu fais saisir le numéro mais jamais le nom qui va avec. Je vois mal comment tu peux faire pour rechercher un numéro qui va avec un nom si tu ne les as pas enregistrés ensembles (a fortiori si tu n'as même pas enregistré le nom)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  12. #12
    Candidat au Club
    Homme Profil pro
    mécanicien
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : mécanicien

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Par défaut
    Un petit coup d'oeil ici http://python.developpez.com/faq/?pa...r]ConfigParser pourrait t'être bien utile
    fichier contact :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [Tartenpion] 
    numero : 060606060606 
    email = tartenpion@email.fr
    adresse: 13 rue du chat noir

  13. #13
    Membre confirmé Avatar de bringer
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2009
    Messages : 125
    Par défaut
    Bonjour,

    rubisom nous dit être étudiant, et travail sur un projet d'école. Il a donc sûrement des impératifs et le fichier txt est vraisemblablement un imposé (même si ce n'est pas le plus judicieux en effet). Par contre, à la lecture du .txt, il me semble que le fichier est organisé pour une lecture "humaine" plus qu'informatique. Chaque enregistrement pourrait être sur une seule ligne séparé par un espace, ",", ";", ou autre (oui, je sais, c'est du csv, mais dit autrement et en répondant au CDC).
    Autre point. Le code semble présenter de nombreuses répétitions. Je ne sais pas si vous avez déjà travaillé avec les fonctions (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    def ma fonction(ma liste d'arguments)
    , mais cela pourrait être une aide dans la structuration et l'organisation du code. En séparant les parties réalisant un travail commun, on peut aisément diminuer les erreurs de logique et d'algorithme comme cela semble être votre cas (cf josmiley)
    josmiley

    Tu peux expliquer ligne par ligne ce qui se passe dans while MENU==2 ?
    bon courage

Discussions similaires

  1. Aide python mini projet ISN
    Par Trirouson dans le forum Général Python
    Réponses: 22
    Dernier message: 19/12/2013, 20h01
  2. Réponses: 2
    Dernier message: 16/06/2010, 00h11
  3. Besion d'aide sur un projet sous Python
    Par anass_59 dans le forum Général Python
    Réponses: 11
    Dernier message: 20/05/2009, 17h16
  4. Mini Projet en C (info disque dur) sous Linux
    Par exhortae dans le forum Linux
    Réponses: 8
    Dernier message: 21/11/2007, 14h41
  5. mini projet sous delphi 5
    Par bahazsa dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/12/2006, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo