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 :

La fonction shuffle de la bibliothèque random


Sujet :

Python

  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2009
    Messages
    220
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 220
    Par défaut La fonction shuffle de la bibliothèque random
    Bonjour,

    J'ai un programme python, dans lequel j'utilise la fonction shuffle de la bibliothèque random pour faire un mélange d'une liste de chaîne de caractères. A chaque fois que j’exécute mon programme, il me déclenche l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    random.shuffle(liste)
    AttributeError: 'builtin_function_or_method' object has no attribute 'shuffle'
    pourtant que j'ai importer la bibliothèque random

    Est ce que vous avez une idée sur ce problème?

    Merci par avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 693
    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 693
    Par défaut
    Salut,
    Votre random n'est pas le random contruit par import random.
    Le message d'erreur parle de 'builtin_function_or_method' object au lieu de "'module' object".
    Ce qui laisse supposer que le code (que vous ne montrez pas) a assigné random à autre chose (après import random qui a fait l'assignation initiale).
    Les sortie de: dir(random), type(random),... devrait vous donner des idées.
    Bon courage,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2009
    Messages
    220
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 220
    Par défaut
    J'ai rien compris je serai reconnaissant si vous pouvez expliquer un peu plus.

    Merci beaucoup d'avance.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 693
    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 693
    Par défaut
    Citation Envoyé par ysahel Voir le message
    J'ai rien compris je serai reconnaissant si vous pouvez expliquer un peu plus.
    Je dis que vu le message d'erreur la variable "random" n'a pas été construit par "import random"'.
    Pour le reste, sans code, pas facile de savoir comment a été réassigné un builtins à la variable "random".

    Pour le fun:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> import random
    >>> type(random)
    <class 'module'>
    >>> random.shuffle
    <bound method Random.shuffle of <random.Random object at 0x02599CF8>>
    Le message d'erreur qu'on attend si shuffle n'était pas dans random serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> random.foo
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'module' object has no attribute 'foo'
    Assignons à random l'objet "open"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> random = open
    >>> random.shuffle
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'builtin_function_or_method' object has no attribute 'shuffle'
    Ce message d'erreur est cohérent avec le votre.
    Il dit que "random" n'est plus "module".
    A partir de là, shuffle n'a plus de raison d'en être un des attributs.

    Et il s'agit de trouver où a été réassigné "random" dans le code "avant" l'appel a random.shuffle (comme c'est dans le code... il n'y a que vous qui pouvez voir...)
    Pour voir ce qu'il est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> random.__name__
    'open'
    >>> type(random)
    <class 'builtin_function_or_method'>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2009
    Messages
    220
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 220
    Par défaut
    Merci beaucoup, le problème est résolu

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/02/2014, 20h10
  2. Linker la bonne fonction avec la bonne bibliothèque
    Par saad.hessane dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 12/02/2012, 21h08
  3. [PHP 5.0] Existe-il une fonction shuffle qui ne réinitialise pas les clés ?
    Par Dsphinx dans le forum Langage
    Réponses: 2
    Dernier message: 09/02/2012, 16h09
  4. Utilisation d'une fonction codee dans une bibliothèque .so
    Par vandamme dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 21/08/2007, 10h02
  5. Réponses: 3
    Dernier message: 07/09/2005, 09h55

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