Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de définition de variable dans fonction

Sujet résolu
    28 mars 2015 à 12:12:58

    Bonjour, 

    Je rencontre le problème suivant :

    Lorsque j’exécute le programme suivant, il m'indique ceci :

    Traceback (most recent call last):

      File "E:/p.py", line 15, in <module>

        print(unite)

    NameError: name 'unite' is not defined

    Voilà le programme :

    def arg():
        ville = [1,2,3,4,5]
        unite = [10,11,12,13,14,15]
        proprietaire = ['moi','ntr','ntr','ntr','adv']
        ville_depart = int(input('ville départ ?'))-1
        return unite
    
    def attribut():
        global ville_depart
        global unite
        print('il y a',unite[ville_depart],'dans la ville n°',ville[ville_depart],'qui est à',proprietaire[ville_depart])
    
    arg()
    print(unite)
    attribut()
    

    Si vous trouvez solution à mon problème n'hésitez pas ^^

    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2015 à 12:22:50

      En suivant ligne à ligne ton programme: On définit des fonctions arg et attribut. On appelle la fonction arg(). Dedans on définit des variables locales. On retourne la valeur de la variable unite, mais cette valeur on n'en fait rien, puisqu'on n'a pas assigné le résultat de l'appelle de la fonction arg() à une variable.

      On veut imprimer unite qui n'existe pas, car elle a disparu au retour de la fonction arg.

      Tu aurais pu écrire en ligne 13: unite = arg() ou même donner un autre nom. Le print alors marcherait (avec le nom donné à la ligne d'avant).

      Pour créer une variable globale depuis une fonction, il faut écrire global unite dans la fonction arg.

      -
      Edité par Dan737 28 mars 2015 à 12:23:02

      • Partager sur Facebook
      • Partager sur Twitter

      Problème de définition de variable dans fonction

      × 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