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 :

R�cup�rer le contenu d'une variable dans une focntion


Sujet :

Python

  1. #1
    Membre habitu�
    Homme Profil pro
    Coll�gien
    Inscrit en
    Janvier 2021
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Coll�gien

    Informations forums :
    Inscription : Janvier 2021
    Messages : 7
    Par d�faut R�cup�rer le contenu d'une variable dans une focntion
    Bonjour, je r�cemment commenc� a d�velopper en python. Je suis bloqu� dans mon programme car je n'arrive pas a r�cup�rer le contenu de la variable de ma fonction carte()
    le code:
    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
    def jeu():
    	global carte1
    	carte1 = 0
    	global carte2
    	carte2 = 0
     
    	carte()
    	carte()
     
    	print(f"J1: {carte.nbre1}")
    	print(f"J2: {carte.nbre2}")
     
    def carte():
     
    	global nbre1
    	global nbre2
    	carte1 = randint(1,13)
    	if carte1 == 1:
    		m = input("Vous avez pioché un as, vous le transphormez en :\n1. Un\n2. Onze\n\nVeuillez entrer un nombre : ")
    		if m == '1':
    			nbre1 = 1
     
    		if m == '2':
    			nbre1 = 11
     
    		if m != '1' or m != '2':
    			print("Veuillez entrer un nombre valide")
    	else:
    		print(f"Vous avez pioché un {carte1}")
    		nbre1 = carte1
     
    	carte2 = randint(1,13)
    J'ai comme erreur:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    > 'function' object has no attribute 'nbre1'
    Est ce que quelqu'un pourrais m'aider svp

  2. #2
    Membre �prouv�
    Inscrit en
    Juillet 2013
    Messages
    80
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 80
    Par d�faut
    Hello,

    L'usage d'une variable global me semble inappropri�e ; vous pouvez tout simplement demander � votre fonction carte() (qui est en fait un g�n�rateur al�atoire de cartes) de vous renvoyer 2 cartes � chaque fois que vous l'appelez. Inutile donc d'alimenter les variables nbre1, nbre2.

    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
    from random import *
    def jeu():
        c1, c2 = carte()
        print(c1, c2)
     
    def carte():
        carte1 = randint(1,13)
        if carte1 == 1:
            m = input("Vous avez pioché un as, vous le transphormez en :\n1. Un\n2. Onze\n\nVeuillez entrer un nombre : ")
            if m == '1':
                nbre1 = 1
     
            if m == '2':
                nbre1 = 11
     
            if m != '1' or m != '2':
                print("Veuillez entrer un nombre valide")
        else:
            print(f"Vous avez pioché un {carte1}")
     
        carte2 = randint(1,13)
        return carte1, carte2
     
    jeu()

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

    Citation Envoy� par marcucucus Voir le message
    je n'arrive pas a r�cup�rer le contenu de la variable de ma fonction carte()
    Les variables auxquelles acc�dent une fonction n'existe que lorsque la fonction s'ex�cute.
    Et les variables qui survivent � la fonction doivent �tre globales.

    Quand vous �crivez: print(f"J1: {carte.nbre1}") nbre1 n'est plus "variable" mais "attribut" de l'objet fonction (parce que le "." dans le nom).

    print(f"J1: {nbre1}")aurait fonctionn� et on pourrait �crire:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    >>> def f():
    ...     f.foo = 123
    ...
    >>> f()
    >>> f.foo
    123
    >>>
    Subtil... mais en attendant de jouer avec ces fac�ties, utilisez les fonctions sous leur forme "pure": on l'appelle avec des param�tres (s'il le faut) et �� retourne un r�sultat sans acc�der ou modifier de variable globales (avec ou sans mot clef global).

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

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2006
    Messages
    12 845
    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 845
    Billets dans le blog
    1
    Par d�faut
    Bonjour
    Citation Envoy� par marcucucus Voir le message
    J'ai comme erreur:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    > 'function' object has no attribute 'nbre1'
    C'est normal, la fonction "carte" (ou plut�t "l'objet carte") n'a pas d'attribut "nbre1". Ce n'est pas parce que tu cr�es une variable dans une fonction que la variable devient attribut de l'objet fonction ; m�me pour une variable globale.
    Si tu veux cr�er un attribut "carte.nbre1" dans l'objet fonction "carte", tu dois le cr�er manuellement dans la fonction => carte.nbre1=....

    Ceci dit, il faut rester simple. Si tu as besoin d'une valeur g�n�r�e par la fonction "carte", alors fais-lui retourner la valeur en question. Ca t'�vitera de jouer inutilement avec les objets et les globales qui ne se justifient pas ici.
    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]

  5. #5
    Membre habitu�
    Homme Profil pro
    Coll�gien
    Inscrit en
    Janvier 2021
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : Coll�gien

    Informations forums :
    Inscription : Janvier 2021
    Messages : 7
    Par d�faut
    D'accord, merci beaucoup pour vos r�ponses

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 0
    Dernier message: 17/09/2014, 19h56
  2. [D�butant] r�cup�rer le contenu d'une formulaire dans un variable
    Par Aws1994 dans le forum C#
    R�ponses: 1
    Dernier message: 16/01/2014, 09h44
  3. R�ponses: 5
    Dernier message: 08/01/2010, 20h26
  4. R�ponses: 1
    Dernier message: 06/10/2007, 11h44
  5. Comment r�cup�rer le contenu d'une URL dans une variable ?
    Par Fildz dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 28/08/2006, 09h26

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