Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème variable d'une fonction à l'autre

Sujet résolu
    4 mai 2011 à 15:48:21

    Salut à tous,

    Alors voilà, j'apprends python depuis un petit moment et je commence par faire un petit programme: un black jack.

    J'utilise des fonctions pour les différentes parties du jeu. Donc dans une des fonctions, je détermine la mise mais j'en ai besoin dans la fonction suivante et là c'est le problème, j'obtiens un jolie message d'erreur : NameError: name 'mise' is not defined.

    Pour résumer un peu ce que je veut faire :

    def calcul_mise():
        mise=500
    def afficher_mise():
        print(mise)
    


    Voilà, c'est en gros ce que je veut faire.

    Merci d'avance à ceux qui on une solution.
    • Partager sur Facebook
    • Partager sur Twitter
      4 mai 2011 à 19:11:29

      Bonjour,

      Sans doute une des principales raisons d'être des fonctions est d'isoler des bouts de code. C'est à dire que pour une fonction, le "monde extérieur" est censé se résumer à ses paramètres éventuels d'une part, et sa valeur de retour d'autre part.

      Ton code ne respecte pas ce point. En effet, mettons que ce soit un code Python valide : a chaque fois qu'on créé une nouvelle fonction, il faudrait faire attention à ne pas utiliser involontairement à l'intérieur des noms de variables déjà utilisés dans d'autres fonctions. Si on ne prendrait pas cette précaution on risquerait de modifier par erreur une variable déjà existante et avoir des résultats délirant. Bonne chance pour trouver l'origine du problème (surtout quand on commence à avoir un nombre non négligeable de fonctions) ^^

      Qu'est-ce que tu utilises comme cours pour apprendre Python ? Il n'y a pas un chapitre "portée/visibilité des variables" quelques part ?

      Il y a deux grandes solution à ton problème (si on laisse de coté les classes) : les variables globales et autres truc louches, et l'utilisation des paramètres et valeur de retour des fonctions.

      Je te conseille plutôt la seconde :

      def calcul_mise():
          mise = 500
          return mise
      
      def afficher_mise(mise):
          print(mise)
      
      mise = calcul_mise()
      afficher_mise(mise)
      


      Chaque fonction est compréhensible indépendamment des autres, ça ne va pas chercher des variables qui sont créés ailleurs (quand elles sont créés!).
      • Partager sur Facebook
      • Partager sur Twitter
        4 mai 2011 à 20:00:53

        salut et merci à toi pour cette réponse que je vais de ce pas tester. :D

        Citation : Grinwik

        Qu'est-ce que tu utilises comme cours pour apprendre Python ? Il n'y a pas un chapitre "portée/visibilité des variables" quelques part ?



        Heu.... surement :euh: , en fait c'est celui présent sur ce site même mais j'ai survolé certaine parti du cours.
        • Partager sur Facebook
        • Partager sur Twitter

        problème variable d'une fonction à l'autre

        × 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