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 :

too many values to unpack [Python 2.X]


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 33
    Points : 47
    Points
    47
    Par défaut too many values to unpack
    Bonjour,

    j'ai un petit soucis, je voudrais effectuer cette commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    status,list_data=bib.TRANSFERT_SDC(VCMD_A[X-X_MIN],[A_VCMD_A_BD1,A_VCMD_A_BD2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
    sauf que j'ai cette erreur :

    File "C:\Users\ind00315\Desktop\test\fc4ssi05.py", line 52, in fc4ssi05
    status,list_data=bib.TRANSFERT_SDC(VCMD_A[X-X_MIN],[A_VCMD_A_BD1,A_VCMD_A_BD2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
    ValueError: too many values to unpack
    j'ai regarder mais j'ai bien 2 élément de chaque coter... des idées?

    merci

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut,

    Il ne faut pas nécessairement qu'il y ait autant d'éléments de "chaque côté" pour que cela soit valide. La méthode ou fonction bib.TRANSFERT_SDC() retourne un certain nombre d'éléments. Visiblement pas deux.

    Ju

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2013
    Messages : 33
    Points : 47
    Points
    47
    Par défaut
    voila le bib.TRANSFERT_SDC

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def TRANSFERT_SDC(A='AG100000',C=[]):
        B=list()
        for i in range (1,33):
            B.append(0xFFFF)
        return B
    ce n'est que un code de teste

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,
    Lorsque vous écrivez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def TRANSFERT_SDC(A='AG100000',C=[]):
        B=list()
        for i in range (1,33):
            B.append(0xFFFF)
        return B
    La fonction retourne une liste de plus de 2 items.

    Si vous essayez de "caster" ces items via:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    status,list_data=bib....
    normal que Python rale: "ValueError: too many values to unpack"

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

  5. #5
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut,

    Je pense que tu peux t'en tirer de différentes manières.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def TRANSFERT_SDC(A='AG100000',C=[]):
        B=list()
        for i in range (1,4):
            B.append(0xFFFF)
        return B
     
    status,list_data=TRANSFERT_SDC()[0],TRANSFERT_SDC()[1:]
     
    print status, list_data
    Mais là on voit tout de suite que bien que ça marche ce n'est pas adapté. Ceci pourrait peut-être l'être plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def TRANSFERT_SDC(A='AG100000',C=[]):
        B=list()
        status = True    # S'il y a bien un statut dans la fonction
        for i in range (1,4):
            B.append(0xFFFF)
        return status, B
     
    status,list_data=TRANSFERT_SDC()
     
    print status, list_data
    Ju

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Julien N Voir le message
    Je pense que tu peux t'en tirer de différentes manières.
    hu?! il n'y a pas de piège!
    Il faut juste un minimum de cohérence entre ce qu'attend l'appelant et ce que retourne l'appelé.
    Si la fonction retourne une liste, on peut se contenter d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def TRANSFERT_SDC(A='AG100000',C=[]):
        B=list()
        for i in range (1,33):
            B.append(0xFFFF)
        return B
     
    list_data=TRANSFERT_SDC()
    Mais seul le PO "sait" s'il manque "status" dans le "return" ou pas.

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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 09/07/2013, 09h57
  2. Réponses: 6
    Dernier message: 16/04/2010, 15h02
  3. Too Many versions & Backup-Restore à rallonge
    Par Harry dans le forum Administration
    Réponses: 14
    Dernier message: 30/06/2004, 18h10
  4. [DDL] Too many versions
    Par TMuet dans le forum Débuter
    Réponses: 4
    Dernier message: 13/01/2004, 09h23
  5. Pgsql : erreur de connexion 'too many clients ...'
    Par petitmoosse dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 21/08/2003, 14h03

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