Partage
  • Partager sur Facebook
  • Partager sur Twitter

une même variable pour plusieurs fonctions

Sujet résolu
    16 février 2017 à 17:09:32

    Bonjour à tous. J'ai un problème récurent avec la définition des variables sur différentes fonctions

    par exemple :

    def random():
        import random
        x = random.randint(1,3)
    
    def condition():
        if x == 3:
            a = str("you got 3")
            return a
        elif x == 2:
            a = str("you got 2")
            return a
        else:
            a = str("you got 1")
            return a
        
    def final_result():
        random()
        condition()
        print(a)
    
    final_result()

    Évidement, à chaque fois, on me met un message d'erreur au niveau du "print" me disant que "a" n'est pas définie.

    J'ai tenté plein de truc différent (mettre "a" dans les parenthèses des fonctions) mais la seul solution est de tout simplement faire un unique bloc. Malheureusement j'ai un autre programme bien plus complexe à faire et j'ai besoin de faire différentes fonction.

    C'est pourquoi je vous demande si vous pourriez m'aider à résoudre ce problème afin que je puisse le résoudre dans tous les cas de figures du même type. Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      16 février 2017 à 17:14:46

      Il est urgent de (re)lire un tutoriel

       EDIT : 

      def random():
          import random
          x = random.randint(1,3)
      

      Les imports de module se font en début de script, pas n'importe où dans le code

      def condition():
          if x == 3:

      Qui est x ? où cette variable est elle définie ? comment la fonction condition() pourrait le deviner ? voir un tuto sur la portée des variables

      a = str("you got 3")

      Les guillemets suffisent à préciser le type string, pas besoin d'en rajouter

      Bon et puis sinon une seule instruction return suffirait, en fin de fonction. Mais vraiment il faut voir un tutoriel sur la portée des variables et les fonctions

      -
      Edité par noobien 16 février 2017 à 17:19:29

      • Partager sur Facebook
      • Partager sur Twitter
        16 février 2017 à 17:17:38

        def random():
            import random
            x = random.randint(1,3)
            return x
         
        def condition():
            if x == 3:
                a = str("you got 3")
                return a
            elif x == 2:
                a = str("you got 2")
                return a
            else:
                a = str("you got 1")
                return a
             
        def final_result():
            x = random()
            a = condition(x)
            print(a)
         
        final_result()
        • Partager sur Facebook
        • Partager sur Twitter
          16 février 2017 à 17:19:50

          En effet...

          Il n'y a aucune variable a dans ta fonction principale...

          Je te conseille de (re)lire le cours du site, ça va vite et on apprend vraiment beaucoup quand on commence

          • Partager sur Facebook
          • Partager sur Twitter
            16 février 2017 à 18:08:25

            @Zerotisme : il y a 20 lignes qui posent problème, tu en corriges 2 sans expliquer le pourquoi du comment. Et en + ça ne règle pas tout.

            def final_result():
                x = random()
                # ok, maintenant random() retourne qqch
            
                a = condition(x)
                # petit pb, non ? vu que dans ta correction condition() ne prend toujours pas d'argument...

            Sans parler du fait que condition() aurait mérité un sérieux lifting, vu qu'elle peut se résumer à ça :

            def condition(x):
                return "you got {}".format(x)

            Et pourquoi (mal) écrire 3 fonctions là où une suffirait. (voire aucune, après ça dépend du pb posé)

            #!usr/bin/python
            
            from random import randint
            
            def tirage():
            	print("you got {}".format(randint(1, 3)))
            
            tirage()

            -
            Edité par noobien 16 février 2017 à 18:11:36

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              16 février 2017 à 18:16:13

              Toutes ces lignes de code se résument en 3 lignes

              import random
                
              X = random.randint(1,3)
               
              print("you got {}".format(X))

              Peux-tu exprimer clairement la problématique ? Car pour l'instant les fonctions et même les conditions ne sont pas utiles... il faut prendre le problème par le bon bout !

              Pour résumé, quel est l'objectif ? Un jeu ?

              EDIT: grilled !

              -
              Edité par Anonyme 16 février 2017 à 18:17:47

              • Partager sur Facebook
              • Partager sur Twitter
                16 février 2017 à 20:29:01

                @oldProgammer en fait c'était juste un test pour un autre programme. Je travaille toujours comme ça histoire de voir où y a un problème.

                De toute façon j'ai eu la réponse à ma question, merci à tous

                PS : attention à la ligne 6 Zérotisme, tu a oublié le "x" dans la parenthèse de la fonction

                -
                Edité par Aifais 16 février 2017 à 20:29:40

                • Partager sur Facebook
                • Partager sur Twitter

                une même variable pour plusieurs fonctions

                × 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