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 :

Importer une liste "permanente"


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 12
    Par défaut Importer une liste "permanente"
    Bonjour à tous,
    Voila, j'ai un petit projet que je voudrais réaliser mais je ne sais pas comment faire. Je vous explique:
    J'ai un code nommé main, mon principal, et un autre nommé index. Je voudrais pouvoir importer une liste de mon index vers le principal, seulement, à chaque fois que je met ceci j'ai une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import index
    liste=index.liste
    De plus, je voudrais que si je lance mon index tout seul, je puisse modifier ma liste et que ces changements restent, c'est à dire que a et b ne se modifient pas à chaque fois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a=int(input("nombre1:"))
    b=int(input("nombre2;"))
    L=[a,b]
    Comment je pourrais faire? Je suis sous python 3.3.5.
    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 305
    Par défaut
    Salut,

    Faudrait voir le code de index.py pour comprendre ce qui se passe.

    Quand tu as une erreur, copie le message avec ton code.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 12
    Par défaut
    Voici mon code main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import index
     
    def entree():
        mot=str(input(">"))
        for i in range (len(index.salutation)):
            for j in range (2):
                if mot==index.salutation[i][0]:
                    reponse=index.salutation[i][1]
                    return index.salutation_r[reponse]
        print("Pardon?")
     
     
    while 1!=2:
        print(entree())
    Et mon index:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fiche=[str(input("Quel est votre nom? ")),str(input("Quel est votre prénom? "))]
    salutation=[["bonjour",0],["bonsoir",1],["salut",0],["Bonjour",0],["Bonsoir",1],["Salut",0]]
    salutation_r=["Bonjour Mr "+ fiche[0],"Bonsoir Mr " + fiche[0]]
    Et python me marque cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Traceback (most recent call last):
      File "C:\Users\Louis\Dropbox\Perso\IA\main.py", line 1, in <module>
        import index
      File "C:\Users\Louis\Dropbox\Perso\IA\index.py", line 2, in <module>
        salutation_r=["Bonjour Mr "+ fiche[0],"Bonsoir Mr " + fiche[0]]
    NameError: name 'fiche' is not defined
    De plus, je souhaiterai que ma liste "fiche" reste la même a chaque ouverture à part si j'ouvre index uniquement.
    Merci d'avance

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 305
    Par défaut
    Il n'y a pas de raison pour que tu aies cette erreur si tu utilise Python 3.

    Avec Python 2 ce code ne peut pas fonctionner.

    Je ne comprend pas trop le sens de ta dernière question. Si tu importes index tu dois re-entrer un nom et un prénom.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 12
    Par défaut
    Pourtant j'ai bien cette erreur
    Ce que je veux dire, c'est que je souhaite que la première fois que je lance le programme, il me demande de rentrer le nom et le prénom mais que, une fois qu'ils ont étés entrés au moins une fois, que lors d'une prochaine ouverture, je n'ai pas besoin de les remettre, sauf si je décide de cliquer sur un bouton ou quelque chose comme ça, que je ne sois pas obligé de remettre les informations à chaque lancement.

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 305
    Par défaut
    Pourtant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    vincent@tiemoko:~/Bureau$ python3
    Python 3.2.3 (default, Feb 27 2014, 21:33:50) 
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import index
    Quel est votre nom? Nom
    Quel est votre prénom? Prenom
    >>> index.salutation_r
    ['Bonjour Mr Nom', 'Bonsoir Mr Nom']
    >>> index.salutation[0]
    ['bonjour', 0]
    >>>
    Si tu ne veux pas rentrer les données à chaque fois, alors mets ce code dans une fonction que tu n'appelles que lors de besoin.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    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 699
    Par défaut
    Salut,

    Citation Envoyé par scorcx Voir le message
    Ce que je veux dire, c'est que je souhaite que la première fois que je lance le programme, il me demande de rentrer le nom et le prénom mais que, une fois qu'ils ont étés entrés au moins une fois, que lors d'une prochaine ouverture, je n'ai pas besoin de les remettre, sauf si je décide de cliquer sur un bouton ou quelque chose comme ça, que je ne sois pas obligé de remettre les informations à chaque lancement.
    Pour faire cela, il faut sauvegarder ces informations dans un objet externe appelé fichier.
    Comme une liste est un objet, on va essayer de se simplifier la vie en "sérialisant" avec json.

    Soit la liste à écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> data = [ 'Dupont', 'Jean' ]
    On peut la sauvegarder via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> import json
    >>> with open('data.json', 'w') as f:
    ...      f.write(json.dumps(data))
    ...
    18
    Pour la relire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> data = None
    >>> with open('data.json', 'r') as f:
    ...      data = json.loads(f.read())
    ...
    >>> print(data)
    ['Dupont', 'Jean']
    Enfin pour vérifier que le fichier existe, on a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> import os
    >>> os.path.exists('data.json')
    True
    >>>
    note: l'avantage de json est qu'il est "lisible" par les humains (et le fichier modifiable avec un editeur simple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wzt! more data.json
    ["Dupont", "Jean"]

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

  8. #8
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par scorcx Voir le message
    Pourtant j'ai bien cette erreur
    Bonsoir,
    Comme VinsS, chez moi, pas d'erreur avec les deux scripts présentés.

    Citation Envoyé par scorcx Voir le message
    Ce que je veux dire, c'est que je souhaite que la première fois que je lance le programme, il me demande de rentrer le nom et le prénom mais que, une fois qu'ils ont étés entrés au moins une fois, que lors d'une prochaine ouverture, je n'ai pas besoin de les remettre, sauf si je décide de cliquer sur un bouton ou quelque chose comme ça, que je ne sois pas obligé de remettre les informations à chaque lancement.
    Conserver des données (ici les noms et prénoms) passe obligatoirement par une écriture sur disque!
    Il serait, peut-être envisageable, lors de l'import, de vérifier qu'un fichier non-vide (qui contient nom/prénom) existe et de n'exécuter "fiche" que lorsque ce fichier n'existe pas (ou qu'il est vide).

    Et ainsi que le souligne VinsS, séparer "fiche" en le mettant dans une fonction, simplifierait la gestion!

    Clodion

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/11/2008, 10h36
  2. importer une liste de distribution depuis excel
    Par gvajoker dans le forum Outlook
    Réponses: 3
    Dernier message: 12/08/2007, 08h49
  3. Réponses: 3
    Dernier message: 15/05/2007, 10h05

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