Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction/class

variable

Sujet résolu
    19 septembre 2019 à 20:47:55

    Bonjour je ne comprend pas le systeme de variable avec les fonction

    ajoutFnom = 0
    ajoutFmatiere = 0
    
    
    
    
    
    
    
    
    
    
    reponse = float(input("""La fiche se trouve dans ?
    1 = Langue
    2 = Sience
    3 = Reste
    """))
    if reponse == 1:
    	reponse = float(input("""Dans quelle matiere est la fiche)
        1 = Francais
        2 = anglais
        3 = espagnole
        4 = histoire geo
        """))
    	if reponse == 1:
                ajoutFmatiere = "Francais"
                ajout1 = str(input('De quoi traite l evaluation ?'))
                ajoutFnom = ajout1
    	elif reponse == 2:
                ajoutFmatiere = "anglais"
                ajout1 = str(input('De quoi traite l evaluation ?'))
                ajoutFnom = ajout1
    	elif reponse == 3:
                ajoutFmatiere = "espagnole"
                ajout1 = str(input('De quoi traite l evaluation ?'))
                ajoutFnom = ajout1
    	elif reponse == 4:
                ajoutFmatiere = "histoire geo"
                ajout1 = str(input('De quoi traite l evaluation ?'))
                ajoutFnom = ajout1
    elif reponse ==2:
        reponse = float(input("""Dans quelle matiere est la fiche
        1 = Physique chimie
        2 = Sience et vie et de la terre
        3 = Technologie
        4 = Mathematique
        """))
        if reponse == 1:
                ajoutFmatiere = "Physique chimie"
                ajout1 = str(input('De quoi traite l evaluation ?'))
                ajoutFnom = ajout1
        elif reponse == 2:
                ajoutFmatiere = "Sience et vie et de la terre"
                ajout1 = str(input('De quoi traite l evaluation ?'))
                ajoutFnom = ajout1
        elif reponse == 3:
                ajoutFmatiere = "Technologie"
                ajout1 = str(input('De quoi traite l evaluation ?'))
                ajoutFnom = ajout1
        elif reponse == 4:
                ajoutFmatiere = "Mathematique"
                ajout1 = str(input('De quoi traite l evaluation ?'))
                ajoutFnom = ajout1
    elif reponse ==3:
        reponse = float(input("""la fiche se trouve dans ?
        1 = Musique
        2 = Art plastique
        3 = E.P.S
        """))
        if reponse == 1:
                ajoutFmatiere = "Musique"
                ajout1 = str(input('De quoi traite l evaluation ?'))
                ajoutFnom = ajout1
        elif reponse == 2:
                ajoutFmatiere = "Art plastique"
                ajout1 = str(input('De quoi traite l evaluation ?'))
                ajoutFnom = ajout1
        elif reponse == 3:
                ajoutFmatiere = "E.P.S"
                ajout1 = str(input('De quoi traite l evaluation ?'))
                ajoutFnom = ajout1
    
    
    
    
    print(ajoutFmatiere)
    print(ajoutFnom)

    si je met tout le mon gros pater de code, le scripte ne marche plus ?

    comment se fait'il ?

    et si une ame charitable pourai m'expliquer le systeme de class je suis preneur ....

    • Partager sur Facebook
    • Partager sur Twitter
      19 septembre 2019 à 21:06:45

      Déjà Qu'est ce que ça t'affiche? 

      • Partager sur Facebook
      • Partager sur Twitter

      #©je code quand je m'ennuie

        19 septembre 2019 à 21:09:46

        ajoutFnom = 0
        ajoutFmatiere = 0
        
        
        
        
        
        
        
        
        
        def fonction():
            reponse = float(input("""La fiche se trouve dans ?
            1 = Langue
            2 = Sience
            3 = Reste
            """))
            if reponse == 1:
            	reponse = float(input("""Dans quelle matiere est la fiche)
                1 = Francais
                2 = anglais
                3 = espagnole
                4 = histoire geo
                """))
            	if reponse == 1:
                        ajoutFmatiere = "Francais"
                        ajout1 = str(input('De quoi traite l evaluation ?'))
                        ajoutFnom = ajout1
            	elif reponse == 2:
                        ajoutFmatiere = "anglais"
                        ajout1 = str(input('De quoi traite l evaluation ?'))
                        ajoutFnom = ajout1
            	elif reponse == 3:
                        ajoutFmatiere = "espagnole"
                        ajout1 = str(input('De quoi traite l evaluation ?'))
                        ajoutFnom = ajout1
            	elif reponse == 4:
                        ajoutFmatiere = "histoire geo"
                        ajout1 = str(input('De quoi traite l evaluation ?'))
                        ajoutFnom = ajout1
            elif reponse ==2:
                reponse = float(input("""Dans quelle matiere est la fiche
                1 = Physique chimie
                2 = Sience et vie et de la terre
                3 = Technologie
                4 = Mathematique
                """))
                if reponse == 1:
                        ajoutFmatiere = "Physique chimie"
                        ajout1 = str(input('De quoi traite l evaluation ?'))
                        ajoutFnom = ajout1
                elif reponse == 2:
                        ajoutFmatiere = "Sience et vie et de la terre"
                        ajout1 = str(input('De quoi traite l evaluation ?'))
                        ajoutFnom = ajout1
                elif reponse == 3:
                        ajoutFmatiere = "Technologie"
                        ajout1 = str(input('De quoi traite l evaluation ?'))
                        ajoutFnom = ajout1
                elif reponse == 4:
                        ajoutFmatiere = "Mathematique"
                        ajout1 = str(input('De quoi traite l evaluation ?'))
                        ajoutFnom = ajout1
            elif reponse ==3:
                reponse = float(input("""la fiche se trouve dans ?
                1 = Musique
                2 = Art plastique
                3 = E.P.S
                """))
                if reponse == 1:
                        ajoutFmatiere = "Musique"
                        ajout1 = str(input('De quoi traite l evaluation ?'))
                        ajoutFnom = ajout1
                elif reponse == 2:
                        ajoutFmatiere = "Art plastique"
                        ajout1 = str(input('De quoi traite l evaluation ?'))
                        ajoutFnom = ajout1
                elif reponse == 3:
                        ajoutFmatiere = "E.P.S"
                        ajout1 = str(input('De quoi traite l evaluation ?'))
                        ajoutFnom = ajout1
        
        
        fonction()
        
        print(ajoutFmatiere)
        print(ajoutFnom)

        Sa m'affiche sa : (si je choisi langue/fr/x)

        La fiche se trouve dans ?

            1 = Langue

            2 = Sience

            3 = Reste

            1

        Dans quelle matiere est la fiche)

                1 = Francais

                2 = anglais

                3 = espagnole

                4 = histoire geo

                1

        De quoi traite l evaluation ?x

        0

        0

        • Partager sur Facebook
        • Partager sur Twitter
          19 septembre 2019 à 22:07:17

          C'est normal, explication: une fonction possède son propre espace de nom de sorte a pouvoir mettre 2 fois la variable "var" dans 2 fonctions par exemple et éviter que l'une efface l'autre. Un espace ne peut en théorie pas modifier un autre (ici avec ta fonction tu tente de modifier l'espace global). Outre ta synthaxe un peu brute, tu peut (doit ?) renvoyer les valeurs que tu veux en sortie style:

              return ajoutFmatiere, ajoutFnom
          
          ajoutFmatiere, ajoutFnom = fonction()
          print(ajoutFmatiere)
          print(ajoutFnom)

          Mais de manière générale, il est mieux de faire 2 fonctions qui s'appellent entre elles éventuellement si tu veux renvoyer 2 valeurs

          -
          Edité par Coliculus 19 septembre 2019 à 22:19:35

          • Partager sur Facebook
          • Partager sur Twitter
            20 septembre 2019 à 17:20:36

            Donc si j'ai bien compris c'es impossible ? je ne peux pas mettre mes variable de ma fonction dans mes variable du 'script' ?

            Edit : j'ai compris mtn merci : D 

            (par contre , pourquoi faire deux fonction ?

            -
            Edité par PigiTruc1 20 septembre 2019 à 17:22:20

            • Partager sur Facebook
            • Partager sur Twitter
              20 septembre 2019 à 19:36:22

              Ca peut être plus clair mais si tu trouve que ça ne l'es pas c'est pas nécessaire non plus mais on aime bien qu'une fonction ai qu'une seule fonction justement ^^

              d'autre suggestions:

                      matiere = ["Francais", "Anglais", "Espagnol", "histoire geo"]
                      ajoutFmatiere = matiere[reponse + 1]
                      
                      ajout1 = str(input('De quoi traite l evaluation ?'))
                      ajoutFnom = ajout1
              
              # à la place de tes grosses structures conditionnelles



              • Partager sur Facebook
              • Partager sur Twitter
                20 septembre 2019 à 19:40:04

                Bonsoir,

                J'ai peut-être pas tout compris, mais on peut utiliser la force de "tout est objet en python" pour faire quelque chose comme,

                In [1]: def function(): 
                   ...:     if not hasattr(function, 'variables'): 
                   ...:         setattr(function, 'variables', {}) 
                   ...:     function.variables['ajoutFmatiere'] = 'Tartanpion' 
                   ...:     function.variables['ajoutNom'] = 'Tintin' 
                   ...:     return function 
                   ...:                                                                         
                
                In [2]: f = function()                                                          
                
                In [3]: f.variables                                                             
                Out[3]: {'ajoutFmatiere': 'Tartanpion', 'ajoutNom': 'Tintin'}
                
                In [4]: f.variables['ajoutFmatiere']                                            
                Out[4]: 'Tartanpion'
                



                • Partager sur Facebook
                • Partager sur Twitter

                Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
                La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                  20 septembre 2019 à 19:54:52

                  On peut mais je sais pas si c'est vraiment conseillé, surtout que au vu du code qu'il propose je ne crois pas qu'il ai le bagage pour comprendre ce que tu fais et sa question était sur la portée des variables

                  -
                  Edité par Coliculus 20 septembre 2019 à 19:55:19

                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 septembre 2019 à 11:30:10

                    Coliculus a écrit:

                    On peut mais je sais pas si c'est vraiment conseillé, surtout que au vu du code qu'il propose je ne crois pas qu'il ai le bagage pour comprendre ce que tu fais et sa question était sur la portée des variables

                    -
                    Edité par Coliculus il y a environ 15 heures

                    oui j'ai pas tout compris....

                    mais un grand merci a toi coliculus pour ta reponse 

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Fonction/class

                    × 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