Partage
  • Partager sur Facebook
  • Partager sur Twitter

aide script carnet d'adresse

    30 novembre 2014 à 15:08:34

    bonjour,

    apres plusieurs recherches sur google et differents forums /tutoriels et videos  , j'ai un peitit soucis.

    allors voila , je souhaite creer une fonction de modification d'un contact dans un fichier texte.

    j'ai cree un fichier contenant deux lignes avec : nom,prenom,adresse et telephone

    avec mon script j'arrive a trouver avec une fonction recherche le sii le contact existe ou pas !! , et son numero de ligne,

    mais ..  petit soucis , comment modifier une des lignes disons la ligne 2 par exemple.

    j'ai pense a ouvir en ou "r+ et utiliser un line.replace(ancien,nouveau), mais les deux lignes que j'ai mis dans mon fichier test.txt commencent avec le meme nom de famille

    si vous pouviez m'aider

    voila ma fonction de modif (enfin pour l'instant recherche !!!)

    # Fonction -modification-
    def modification():
        print ""
        print ""
        print " --------------------------- "
        print " -Modification d'un contact- "
        print " --------------------------- "
        print ""
        print ""
        fichier_m = raw_input ("Nom du contact a modifier : ")
        fichier_c = raw_input ("Dans quel fichier: ")
        fichier_d = fichier_c + ".txt"
        print "Recherche  en cours dans: " , fichier_d
        with open(fichier_d, "r") as modif:
            for ligne, line in enumerate(modif):
                if fichier_m in line:
                    print fichier_m, "Trouvé en ligne: ", ligne + 1
                else:
                    print "Non trouve en ligne: ", ligne + 1
        
    

    Je remercie toute la communauté , et bonne journée
       

    • Partager sur Facebook
    • Partager sur Twitter
      30 novembre 2014 à 16:30:07

      Tu lis tout le fichier texte en mémoire, tu modifies ce dont tu as besoin et tu écris le tout sur ton ancien fichier (tu l'écrases).

      Vu que ce que tu fais avec un fichier texte ressemble plus à un traitement de base de donnée, tu voudras peut-être regarder le module sqlite3

      -
      Edité par Dan737 30 novembre 2014 à 16:31:44

      • Partager sur Facebook
      • Partager sur Twitter
        1 décembre 2014 à 17:02:09

        oui effectivement ^^  , mais pour l'instant étant encore novice je vais essayer de faire avec ce que tu m'as conseille pour continuer a apprendre les bases !

        donc en gros tu me dis (si j'ai bien compris).

        j’ouvre en lecture

        with open(fichier_d, "r") as modif: 
         

        ensuite je transformes en liste

        modif = list(modif)
        
        

        puis je remplace avec un

        line.replace(x,y)
        

        et j’écrase avec un

        with open(fichier_d, "w") as modif:
        
        modif.write(modif)


        • Partager sur Facebook
        • Partager sur Twitter
          5 décembre 2014 à 9:06:08

          Bonjour,

          Je viens de lire ton post et je serais interessé par ton programme car j'essaye de faire un peu le même type de projet.

          Peux-tu me dire ou tu en es ?

          Merci par avance.

          • Partager sur Facebook
          • Partager sur Twitter
            5 décembre 2014 à 10:45:53

            bonjour, Oliv29Breton

            donc mon projet en est au début :

            le projet , créer un carnet d'adresses en format .txt  qui contiendrait (pour l'instant)

            +nom 

            +prénom

            +adresse

            +téléphone

            et diverses fonctions comme :

            +créer

            +ajouter

            +effacer

            +modifier

            +lire

            les fonctions qui fonctionnent sont :

            +créer

            +ajouter

            celles en développement: (et ou je galères un peu):

            +modifier (modifier une ligne dans une liste..) qui pourtant j'en suis sur est simple ....

            +effacer ( après avoir crée la fonction modifier)

            +lecture (bon celle la pas encore faite mais elle est simple ^^)

            une fois le programme fonctionnel:

            +essayer de le simplifier

            +et éventuellement création d'un GUI

            je précise qu je suis en cours d'apprentissage et donc je souhaite créer des fonctions par moi même  (sans sql ,pickle , etc..  pour l'instant!!!)

            mon plus grand problème c'est vraiment cette  fonction <<modifier>> , mais suis sur je suis pas loin du tout !!!

            • Partager sur Facebook
            • Partager sur Twitter
              5 décembre 2014 à 11:26:18

              Bonjour,

              Merci pour ces infos. Je suis en cours aussi de programmation mais je galère.

              Serait il possible de m'envoyer le programme ? ou déjà les fonctions créer et ajouter.

              Moi je vais un programme pour gérer des dvd. J'ai crée le menu pour l'instant maintenant je dois créer les mêmes fonctions que toi.

              • Partager sur Facebook
              • Partager sur Twitter
                5 décembre 2014 à 11:39:22

                J'ai fait rapidos un petit bout de code pour te montrer les fonctionnalités de base. Il n'y a pas de menu, seulement des fonctions qui pourront t'inspirer. Mon exemple ajoute 3 entrées, sauvegarde, charge ce qu'on vient de sauvegarder, modifie un nom et sauve de nouveau.

                Comme structure pour le carnet d'adresse, j'ai pris une liste de dictionnaires. Chaque dictionnaire est composé des clés nom, prenom, adresse et telephone. Pour la sauvegarde ma convention est une ligne par personne dans le carnet. Chaque champ est séparé par une tabulation.

                J'attirerai ton attention sur les fonctions. Chacune ne fait qu'une petite chose à la fois. La fonction find ne fait que trouver une entrée, et elle est utilisée dans la fonction modify. Ca permet de pouvoir ré-utiliser find ailleurs sans rien modifier.

                -- coding: utf8 --

                def add(carnet, nom, prenom, adresse, telephone):

                data = {'nom': nom, 'prenom': prenom, 'adresse': adresse, 'telephone': telephone}
                carnet.append(data)
                

                def save(carnet, filename):

                with open(filename, 'w') as f:
                    for data in carnet:
                        keys = ['nom', 'prenom', 'adresse', 'telephone']
                        f.write('\t'.join([data[key] for key in keys]))
                        f.write('\n')
                

                def show(carnet):

                for data in carnet:
                    print """***********************
                

                Nom: {nom} Prenom: {prenom} Adresse: {adresse} Telephone: {telephone} *********""".format(data)

                def load(carnet, filename):

                with open(filename, 'r') as f:
                    for line in f:
                        data_values = line.rstrip('\n').split('\t')
                        data_keys = ['nom', 'prenom', 'adresse', 'telephone']
                        data = dict(zip(data_keys, data_values))
                        carnet.append(data)
                

                def find(carnet, key, value):

                for data in carnet:
                    if data[key] == value:
                        return data
                

                def modify(carnet, key, old_value, new_value):

                data = find(carnet, key, old_value)
                data[key] = new_value
                

                def main():

                carnet = []
                # Ajoute quelques entrées
                add(carnet, 'Nom1', 'Prenom1', 'Rue1', '0011')
                add(carnet, 'Nom2', 'Prenom2', 'Rue2', '0012')
                add(carnet, 'Nom3', 'Prenom3', 'Rue3', '0013')
                # Sauvegarde du fichier
                save(carnet, 'carnet.txt')
                # On efface carnet pour démontrer la fonctionnalité de chargement
                carnet = []
                load(carnet, 'carnet.txt')
                # On modifie le nom Nom1 par NomModifie
                modify(carnet, 'nom', 'Nom1', 'NomModifie')
                # On affiche le carnet
                show(carnet)
                # On sauvegarde, en écrasant l'ancien fichier
                save(carnet, 'carnet.txt')
                

                if name == 'main':

                main()
                
                </pre>

                -
                Edité par Dan737 5 décembre 2014 à 11:41:37

                • Partager sur Facebook
                • Partager sur Twitter
                  5 décembre 2014 à 11:48:55

                  Merci pour les menus cela m'aide déjà beaucoup, par contre peux-tu comment je peux faire pour tester chaque fonction individuellement.

                  Pour info moi j'ai déjà créé le menu

                  #Initialisation de la variable de boucle
                  running = True
                  
                  #Affichage du Menu
                  print("*************************************")
                  print("*            DVD THEQUE             *")
                  print("*************************************")
                  print("Version : ",__version__)
                  print("Auteur : {0} - Date de création : {1}".format(__author__,__date__))
                  
                  
                  #Boucle du Programme
                  while running:
                      print("\nQue voulez-vous faire ?\n")
                      print("1. Ajouter un DVD")
                      print("2. Rechercher un DVD")
                      print("3. Modifier un DVD")
                      print("4. Supprimer un DVD")
                      print("5. Voir la liste des DVD")
                      print("6. Quitter")
                  
                      try:
                          #saisie du choix
                          rep = eval(input("\nChoix : "))
                  
                          #Conditions
                          #Ajout d'un DVD
                          if rep == 1:
                              carnet.adddvd()
                  
                          #Rechercher un DVD
                          elif rep == 2:
                              carnet.rechdvd()
                  
                          #Modifier un DVD
                          elif rep == 3:
                              carnet.moddvd()
                  
                          #Supprimer un DVD
                          elif rep == 4:
                              carnet.supprdvd()
                  
                          #Liste des DVD
                          elif rep == 5:
                              carnet.affdvd()
                  
                          #Quitter
                          elif rep == 6:
                              sys.exit()
                  
                          #Clause petit malin
                          else :
                              print("Veuillez entrer un choix valide")
                  
                      except NameError:
                          print("Veuillez entrer un choix valide.")
                          continue
                      except SyntaxError:
                          print("Veuillez entrer un choix valide.")
                          continue
                      #si l'utilisateur utilise ctrl+D pour quitter
                      except EOFError:
                          print("\nVeuillez entrer 6 comme choix pour quitter le programme.")
                          continue
                      #si l'utilisateur utilise ctrl+C pour quitter
                      except KeyboardInterrupt:
                          print("\nVeuillez entrer 6 comme choix pour quitter le programme.")
                          continue
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 décembre 2014 à 12:29:10

                    tiens je te montre aussi mon code TEST:

                    # Carnet D'adresse Version 1.0
                    
                    # Creation des fonctions
                    
                    # Fonction -creation-
                    def creation():
                        print ""
                        print ""
                        print " --------------------"
                        print " -Creation du carnet-"
                        print " --------------------"
                        print ""
                        print ""
                        fichier_c = raw_input ("Nom du carnet a creer : ")
                        fichier_c = fichier_c + ".txt"
                        print "Creation du carnet : ", fichier_c
                        with open (fichier_c, "w") as nouveau:
                            nouveau.write("")
                        
                    
                    
                    
                    # Fonction -ajout-
                    def ajout():
                        print ""
                        print ""
                        print " -------------------- "
                        print " -Ajout d'un contact- "
                        print " -------------------- "
                        print ""
                        print ""
                        nom = raw_input ("Nom : ")
                        prenom = raw_input ("Prenom : ")
                        adresse = raw_input ("Adresse : ")
                        telephone = raw_input ("Telephone : ")
                        contact = nom + " " + prenom
                        print ""
                        print  contact, "a été créé"
                        fichier_c = raw_input ("Enregistrer dans :")
                        fichier_e = fichier_c + ".txt"
                        print "Enregistrement en cours dans: " , fichier_e
                        with open (fichier_c, "a") as ajout:
                            ajout.write(prenom + "," + nom + "," + adresse + "," + telephone)
                            ajout.write("\n")
                        
                    
                    
                        
                         
                    # Fonction -modification-
                    def modification():
                        print ""
                        print ""
                        print " --------------------------- "
                        print " -Modification d'un contact- "
                        print " --------------------------- "
                        print ""
                        print ""
                        fichier_m = raw_input ("Nom du contact a modifier : ")
                        fichier_c = raw_input ("Dans quel fichier: ")
                        fichier_d = fichier_c + ".txt"
                        print "Recherche  en cours dans: " , fichier_d
                        
                        with open(fichier_d, "r") as modif:
                            modif = list(modif)
                            print "liste: ",modif
                            for ligne, line in enumerate(modif):
                                if fichier_m in line:
                                    print fichier_m, "Trouvé en ligne: ", ligne + 1                
                                else:
                                    print "Non trouve en ligne: ", ligne + 1
                            
                            print modif
                            type(modif)
                      
                            
                    
                    
                        
                                
                        
                        
                              
                        
                    
                    # Fonction -lecture-
                    def lecture():
                        print ""
                        print ""
                        print " ------------------- "
                        print " -Lecture du carnet- "
                        print " ------------------- "
                        print ""
                        print ""
                        fichier_l = input ("Nom du carnet a lire : ")
                        
                    
                    # Fonction -menu-
                    def menu(): 
                        print ""
                        print ""
                        print "                      ----                   "
                        print "                      MENU                   "
                        print "                      ----                   "
                        print ""
                        print ""
                        print " -1- Creation d'un carnet "
                        print " -2- Ajout d'un contact "
                        print " -3- Modification d'un contact "
                        print " -4- Lecture du carnet "
                        print ""
                        choix()
                    
                    # Fonction -choix-
                    def choix():
                        choix = raw_input ("  -Votre choix- : ")
                    
                        if choix == "1":
                            creation()
                            choixon()
                        elif choix == "2":
                            ajout()
                            choixon()
                        elif choix == "3":
                            modification()
                            choixon()
                        elif choix == "4":
                            lecture()
                            choixon()
                        else:
                            print ""
                            print ""
                            print "               ---------------"
                            print "               CHOIX INCORRECT"
                            print "               ---------------"
                    
                    
                    # Fonction -choixon-
                    def choixon():
                        choixon = raw_input("retourner au menu ? (o/n) : ")
                        if choixon =="o":
                            menu()
                        else:
                            print "Aurevoir et a la prochaine! "
                        
                    # Demarage du programme
                    
                    fichier_c = None
                    fichier_m = None
                    fichier_d = None
                    contact = None
                    nom = None
                    prenom = None
                    adresse = None
                    telephone = None
                    modif1 = None
                    lecteur = None
                    index = None
                    
                    print "----------------------------------------------"
                    print "Bonjour et bienvenue dans le Carnet D'adresses"
                    print "----------------------------------------------"
                    
                    menu()
                    
                    
                    
                    
                    



                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 décembre 2014 à 14:45:21

                      Merci,  par contre comment peut-on tester fonction par fonction ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 décembre 2014 à 14:51:14

                        ben par exemple: pour ma fonction menu pour le menu principal je la sauves a part

                        et ensuite pour la tester je tapes :   

                        menu()

                        pour la fonction modif ce sera   :    

                        modif()

                        après tu peut aussi tester grâce au menu en tapant le numéro correspondant a ta fonction .

                        je sais pas si je me suis bien expliqué :)  ...

                        -
                        Edité par lilme67 5 décembre 2014 à 14:53:56

                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 décembre 2014 à 15:15:12

                          Pour tous ces menus, il y a un super module dans la librairie standard appelé cmd. Je poste un example montrant comment l'utiliser. Il ne faut pas ré-inventer la roue. :)

                          Pour tester chaque fonction, il faut déjà que ces fonctions soient réduites à leur plus simple expression. Ce que je veux dire c'est que par exemple la fonction adddvd ne doit que ajouter un dvd, et non demander à l'utilisateur d'autres choses avec des raw_input. Si cependant il est nécessaire de demander ces choses, la demande doit être dans une fonction, et l'ajout dans une deuxième fonction.

                          Pour tester les fonctions, tu peux utiliser UnitTest. Je donne un exemple de test pour le code que je fournis.

                          # -*- coding: utf8 -*-
                          import cmd
                          
                          class Carnet(cmd.Cmd, object):
                              """
                              Carnet d'adresse utilisable en ligne de commande.
                              """
                              DEFAULT_FILE = 'contact.txt'
                              intro = """
                          *************************************
                          *         CARNET D ADRESSE          *
                          *************************************
                          Que voulez-vous faire ?
                          Menu pour afficher ce menu
                          Ajouter un contact
                          Rechercher un contact
                          Modifier un contact
                          Supprimer un contact
                          Voir la liste des contacts
                          Sauvegarder
                          Charger un carnet de contacts
                          Quitter
                          """
                              prompt = "(Commande: ? pour de l'aide)"
                              def __init__(self):
                                  super(Carnet, self).__init__()
                                  self. carnet = []
                                  
                              def add(self, nom, prenom, adresse, telephone):
                                  data = {'nom': nom, 'prenom': prenom, 'adresse': adresse, 'telephone': telephone}
                                  self.carnet.append(data)
                                  return data
                                  
                              def do_ajouter(self, line):
                                  """
                                  Ajoute un contact dans le carnet d'adresse
                                  """
                                  #nom, prenom, adresse, telephone = line.split(' ')
                                  nom = raw_input("Nom: ")
                                  prenom = raw_input("Prenom: ")
                                  adresse = raw_input("Adresse: ")
                                  telephone = raw_input("Telephone: ")
                                  data = self.add(nom, prenom, adresse, telephone)
                                  self.show_element(data)
                          
                              def do_sauvegarder(self, line):
                                  """
                                  Sauvegarde le carnet d'adresse dans le fichier fourni en argument.
                                  Sans argument, le fichier contact.txt est utilisé.
                                  """
                                  filename = line or self.DEFAULT_FILE
                                  with open(filename, 'w') as f:
                                      for data in self.carnet:
                                          keys = ['nom', 'prenom', 'adresse', 'telephone']
                                          f.write('\t'.join([data[key] for key in keys]))
                                          f.write('\n')
                                      print "Fichier {0} sauvegarde avec succes!".format(filename)
                          
                              def do_voir(self, line):
                                  """
                                  Affiche les contacts dans le répertoire.
                                  """
                                  print "Contacts dans le carnet d'adresse"
                                  for data in self.carnet:
                                      self.show_element(data)
                          
                              def show_element(self, element):
                                  print """-----------------------
                          Nom: {nom}
                          Prenom: {prenom}
                          Adresse: {adresse}
                          Telephone: {telephone}
                          -----------------------""".format(**element)
                          
                              def do_charger(self, line):
                                  """
                                  Charge le carnet d'adresse depuis le fichier fourni en argument.
                                  Sans argument, le fichier contact.txt est utilisé.
                                  """
                                  filename = line or  self.DEFAULT_FILE
                                  with open(filename, 'r') as f:
                                      for line in f:
                                          data_values = line.rstrip('\n').split('\t')
                                          data_keys = ['nom', 'prenom', 'adresse', 'telephone']
                                          data = dict(zip(data_keys, data_values))
                                          self.carnet.append(data)
                                      print "Chargement effectue avec succes!"
                          
                              def do_rechercher(self, line):
                                  """
                                  Recherche un element du carnet
                                  Usage: rechercher nom le_nom
                                  """
                                  try:
                                      key, value = line.split(' ')
                                  except ValueError:
                                      print "Mauvais usage de la commande. Deux arguments necessaires."
                                      return
                                  data = self.find(key, value)
                                  if data:
                                      self.show_element(data)
                                  else:
                                      print "Contact introuvable."
                                          
                              def find(self, key, value):
                                  for data in self.carnet:
                                      if data[key] == value:
                                          return data
                                          
                              def do_modifier(self, line):
                                  """
                                  Modifie un contact du carnet.
                                  Usage: modifier nom le_nom le_nouveau_nom
                                  """
                                  try:
                                      key, old_value, new_value = line.split(' ')
                                  except ValueError:
                                      print "Mauvais usage de la commande. Trois arguments necessaires."
                                      return
                                  data = self.find(key, old_value)
                                  data[key] = new_value
                              
                              def do_supprimer(self, line):
                                  """
                                  Supprime un contact du carnet.
                                  Usage: supprimer nom le_nom
                                  """
                                  try:
                                      key, value = line.split(' ')
                                  except ValueError:
                                      print "Mauvais usage de la commande. Deux arguments necessaires."
                                      return
                                  data = self.find(key, value)
                                  if data:
                                      self.carnet.remove(data)
                                      print "Contact efface."
                                  else:
                                      print "Contact introuvable."
                              
                              def do_quitter(self, *args):
                                  "Quitte l'application"
                                  return True
                              
                              def do_menu(self, line):
                                  """
                                  Affiche le menu principal
                                  """
                                  print self.intro
                          
                          if __name__ == '__main__':
                              Carnet().cmdloop()
                          

                          Et pour les tests

                          -- coding: utf8 --

                          import sys from cStringIO import StringIO import unittest from carnet_adresse import Carnet

                          class TestCarnet(unittest.TestCase):

                          def setUp(self):
                              self.carnet_test = Carnet()
                              
                          def test_add(self):
                              self.carnet_test.add('Nom1', 'Prenom1', 'Rue1' ,'0011')
                              self.assertEqual(self.carnet_test.carnet,
                                                  [ { 'nom': 'Nom1',
                                                      'prenom': 'Prenom1',
                                                      'adresse': 'Rue1',
                                                      'telephone': '0011'
                                                    } ]
                                               )
                          
                          def test_do_recherche(self):
                              # Coming from http://stackoverflow.com/a/12683001/893822
                              if not hasattr(sys.stdout, "getvalue"):
                                  self.fail("need to run in buffered mode")
                              
                              # Need to add a contact first
                              self.carnet_test.add('Nom1', 'Prenom1', 'Rue1' ,'0011')
                              
                              # Test we find Nom1
                              self.carnet_test.do_rechercher('nom Nom1')
                              output = sys.stdout.getvalue().strip() # because stdout is an StringIO instance
                              self.assertEquals(output,"""-----------------------
                          

                          Nom: Nom1 Prenom: Prenom1 Adresse: Rue1 Telephone: 0011 -----------------------""")

                              # Test we don't find Nom2
                              sys.stdout = StringIO() # Reset the output
                              self.carnet_test.do_rechercher('nom Nom2')
                              output = sys.stdout.getvalue().strip() # because stdout is an StringIO instance
                              self.assertEquals(output,"Contact introuvable.")
                          

                          if name == 'main':

                          # Coming from http://stackoverflow.com/a/12683001/893822s
                          assert not hasattr(sys.stdout, "getvalue")
                          unittest.main(module=__name__, buffer=True, exit=False)
                          
                          </pre>
                          • Partager sur Facebook
                          • Partager sur Twitter
                            5 décembre 2014 à 15:18:17

                            exemple:

                            une fonction d'affichage d'un texte

                            def afficheEcran():    
                                print "TEST DE L'AFFICHAGE"
                            
                            
                            

                            pour tester la fonction tu tapes

                            afficheEcran()

                            et ça t'affichera:

                            TEST DE L'AFFICHAGE

                            ce qui te montrera que ta fonction marche ^^

                            ou alors un joli TRACEBACK , qui t’indiquera ou est l'erreur dans ta fonction






                            -
                            Edité par lilme67 6 décembre 2014 à 8:52:01

                            • Partager sur Facebook
                            • Partager sur Twitter
                              5 décembre 2014 à 16:03:39

                              je l'ai fait comme cela
                              liste_dvd = [] 
                                
                              def adddvd(liDVD): 
                                  dvd = input("Titre du dvd à ajouter à la DVDthèque: ") 
                                  
                                  #Vérification du nom dans la liste
                                  if dvd in liste_dvd: 
                                      exist = True
                                  else: 
                                      exist = False
                                      
                                  return dvd,exist
                              
                              
                              nouveauDVD,DVDexistant = adddvd(liste_dvd)
                              
                              if (DVDexistant == True):
                                  print("Ce DVD existe déjà dans votre DVDthèque") 
                              else:
                                  liste_dvd.append(nouveauDVD)
                                  print("Le dvd a bien été enregistré")
                              
                              
                              print(liste_dvd)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                6 décembre 2014 à 9:41:12

                                après quelques recherches supplémentaire sur Google j'ai peut être trouve pour la fonction modification , je vais la tester des que j'ai le temps ^^

                                (mais ca me parait correct a premier abord)

                                sûrement ce week-end ou début de semaine prochaine :

                                je partage le script :

                                f = open(filein,"r")
                                filedata = f.read()
                                f.close
                                
                                newdata = filedata.replace("olddata","newdata")
                                
                                f =open(fileout,"w")
                                f.write(newdata)
                                f.close()

                                qu'en pensez vous ??

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  6 décembre 2014 à 11:13:35

                                  Vais commencer a imprimer tout ce post , car vos réponses sont très très intéressantes et me serviront

                                  merci ^^

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    8 décembre 2014 à 21:29:45

                                    Serait-il possible de me renvoyer le code avec les fonctions qui fonctionnent car là j'ai essayé de lancer votre code et il y a des erreurs qui remontent et je n'arrive pas à le faire fonctionner.

                                    Encore merci pour votre aide.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      8 décembre 2014 à 21:35:51

                                      A qui t'adresses-tu? :) Quels sont les erreurs? Le but est tout de même que tu apprennes quelque chose au passage, non?
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        9 décembre 2014 à 9:45:06

                                        hello ,

                                        pour mon code  il est possible qu'il y ait Traceback chez toi ^^  , car j'utilise python 2.7 et non 3.4

                                        quelles sont tes erreurs dans le script ? 

                                        -
                                        Edité par lilme67 9 décembre 2014 à 9:50:20

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          9 décembre 2014 à 16:10:45

                                          Voici le message d'erreur :

                                          In [10]: (executing lines 1 to 106 of "<tmp 1>")

                                          Bonjour et bienvenue dans le Carnet D'adresses

                                          MENU

                                          -1- Creation d'un carnet

                                          -2- Ajout d'un contact

                                          -3- Modification d'un contact

                                          -4- Lecture du carnet

                                          Traceback (most recent call last):

                                          File "<tmp 1>", line 106, in <module>

                                          menu()

                                          File "<tmp 1>", line 57, in menu

                                          choix()

                                          File "<tmp 1>", line 61, in choix

                                          choix = raw_input (" -Votre choix- : ")

                                          NameError: name 'raw_input' is not defined

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            9 décembre 2014 à 18:19:08

                                            Bonsoir ^^

                                            tu utilises quelle version de python ?  je supposes 3.4 ?

                                            <<PEP 3111: raw_input() was renamed to input(). That is, the new input() function reads a line from sys.stdin and returns it with the trailing newline stripped. It raises EOFError if the input is terminated prematurely. To get the old behavior of input(), use eval(input()).>>

                                            effectivement dans la 3.4

                                            Python 3.4.0 (default, Apr 11 2014, 13:05:18) 
                                            [GCC 4.8.2] on linux
                                            Type "copyright", "credits" or "license()" for more information.
                                            >>> test = raw_input ("question: ")
                                            Traceback (most recent call last):
                                              File "<pyshell#0>", line 1, in <module>
                                                test = raw_input ("question: ")
                                            NameError: name 'raw_input' is not defined
                                            >>> 

                                            dans python 2.7 pas ce problème: 

                                            Python 2.7.6 (default, Mar 22 2014, 22:59:38) 
                                            [GCC 4.8.2] on linux2
                                            Type "copyright", "credits" or "license()" for more information.
                                            >>> test = raw_input ("question: ")
                                            question: oui ? 
                                            >>> test
                                            'oui ?'
                                            >>> type(test)
                                            <type 'str'>
                                            >>> 
                                            


                                            essayes de remplacer

                                            choix = raw_input (" -Votre choix- : ")

                                            par:

                                            choix = input (" -Votre choix- : ")

                                             il y aura sûrement d’autres traceback

                                            pour t'aider a te donner des idées  tu peut aussi regarder par ici il y a des videos qui parlent de gestion de DVD :

                                            XXIV. Bases de données (2) :Ce tutoriel présente juste le contexte de ce qui sera développé dans les tutoriels suivants ; l'application (gestion de DVD), une problématique intéressante à résoudre (recherche "floue" sur les titres) et une présentation rapide de sqlite qui sera utilisé dans les exemples.

                                            http://python.developpez.com/cours/pythonneries/?page=XXIII

                                            ou directement  un code source "DVDtheque" (mais faudra sûrement s'inscrire et se connecter pour y avoir accès)

                                            http://www.developpez.com/telechargements/auth/id/727795529545b1b2efd1da6111d7c19c

                                            moi comme dit pour l'instant sql et d'autres fonctions (pickle etc..) ne m’intéresse pas car je souhaite bien assimiler les bases avant d'aller plus loin :)

                                            lilme67

                                            -
                                            Edité par lilme67 9 décembre 2014 à 18:52:35

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              24 décembre 2014 à 17:07:26

                                              Bonjour,

                                              Serait-il possible de publier la fonction recherche.

                                              Merci.

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                29 décembre 2014 à 16:02:23

                                                Bonjour,

                                                voici mon programme. Donc j'arrive bien à remplir un fichier txt par contre je n'arrive pas à créer la focntion recherche par titre, genre, realisateur.

                                                Pourrais-tu m'aider suite à ton expérience réalisé sur ton carnet d'adresse ?

                                                # Creation des fonctions 
                                                import os
                                                import pickle
                                                
                                                Monfichier = "dvdtheque.txt"
                                                  
                                                # Fonction -creation bdd- 
                                                def creation(file): 
                                                
                                                    # Creation du fichier
                                                    if os.path.isfile(file):
                                                        pass
                                                    else :
                                                        file = open (file, "w")
                                                        file.close()
                                                        
                                                
                                                     
                                                # Fonction -ajout- 
                                                def ajout(file): 
                                                    
                                                    fichier = open(file,"ab")
                                                
                                                    print (" -Ajout un DVD- ")
                                                
                                                    nom = input ("\nNom du film : \n") 
                                                    genre = input ("Genre du film : \n") 
                                                    annee = input ("Annee de sortie du film : \n") 
                                                    realisateur = input ("Realisateur du film : \n") 
                                                    film = nom + " " + genre + " "+ annee + " " + realisateur
                                                    print ("") 
                                                
                                                    
                                                    pickle.dump(film,fichier)
                                                    fichier.close()
                                                    
                                                
                                                # Fonction -lecture- 
                                                def lecture(file): 
                                                
                                                        fichier = open (file, "r")
                                                        t = fichier.readlines()
                                                        print(t)
                                                        fichier.close()
                                                        
                                                # Fonction -quitter- 
                                                def quitter(file): 
                                                    return True
                                                                
                                                # Fonction -choixon- 
                                                def choixon(): 
                                                    choixon = input("Retourner au (M)enu ou (Q)uitter ? (M/Q) : ") 
                                                    if choixon =="M": 
                                                        menu() 
                                                    else: 
                                                        print ("Aurevoir et a la prochaine! ")
                                                        
                                                # Fonction -menu- 
                                                def menu():  
                                                
                                                    print("*************************************")
                                                    print("*               MENU                *")
                                                    print("*       Que voulez-vous faire ?     *")
                                                    print("*************************************")
                                                    
                                                    print("Ajouter un DVD, tapez 1")
                                                    print("Rechercher un DVD, tapez 2")
                                                    print("Modifier un DVD, tapez 3")
                                                    print("Supprimer un DVD, tapez 4")
                                                    print("Voir la liste des DVD, tapez 5")
                                                    print("Quitter, tapez 6")
                                                
                                                    choix() 
                                                  
                                                # Fonction -choix- 
                                                def choix(): 
                                                    choix = int (input("  -Votre choix (de 1 à 6)- : "))
                                                  
                                                    #Ajout d'un DVD
                                                    if choix == 1:
                                                        ajout(Monfichier) 
                                                        choixon()
                                                
                                                    #Modifier un DVD
                                                    elif choix == 2:
                                                        modif() 
                                                        choixon()
                                                        
                                                    #Rechercher un DVD
                                                    elif choix == 3:
                                                        recherche() 
                                                        choixon()
                                                
                                                    #Supprimer un DVD
                                                    elif choix == 4:
                                                        supp() 
                                                        choixon()
                                                
                                                    #Liste des DVD
                                                    elif choix == 5:
                                                        lecture(Monfichier) 
                                                        choixon()
                                                
                                                    #Liste des DVD
                                                    elif choix == 6:
                                                        quitter(Monfichier) 
                                                        
                                                    #Clause petit malin
                                                    else :
                                                        print("Veuillez entrer un choix valide")
                                                
                                                 
                                                # Demarage du programme 
                                                  
                                                film = []
                                                nom = []
                                                genre = []
                                                annee = []
                                                realisateur = []
                                                
                                                  
                                                print("*************************************")
                                                print("*            DVD THEQUE             *")
                                                print("*************************************")
                                                
                                                  
                                                menu()
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                aide script carnet d'adresse

                                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                • Editeur
                                                • Markdown