Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les methodes

    1 juillet 2010 à 18:50:47

    Plop all,
    J'ai tenté te faire une fonction (ou methode, je sais pas comment l'appeller dans ce langage) et à l'apelle de la fonction j'ai une syntaxe invalide ...

    >>> def multiplication(nombre):
    	i=1
    	while i>10:
    		resultat=i*nombre
    		print(i,"x",nombre," = ",resultat,"\n")
                    i+=1
    		
    multiplication(10)
    SyntaxError: invalid syntax
    


    Sur la ligne "multiplication(10)"...

    Si vous pouviez m'expliquer...
    Merci =)

    EDIT :

    Et si je n'entre que la methode :

    def multiplication(nombre):
    	i=1
    	while i>10:
    		resultat=i*nombre
    		print(i,"x",nombre," = ",resultat,"\n")
                    i += 1
                    
    SyntaxError: inconsistent use of tabs and spaces in indentation
    


    sur la ligne "i +=1"...
    • Partager sur Facebook
    • Partager sur Twitter
      1 juillet 2010 à 19:04:40

      Méthode != Fonction, une méthode est associé à une classe, un objet.
      Quand je teste ton code je n'ai pas de syntaxe invalide...
      Sinon i>10 devrait être i<10 non ?
      Et pour avoir un meilleur 'rendu' je te conseille de rajouter
      sep=''
      
      à ton print :o
      • Partager sur Facebook
      • Partager sur Twitter
        1 juillet 2010 à 19:10:18

        Citation : Holt

        Méthode != Fonction, une méthode est associé à une classe, un objet.
        Quand je teste ton code je n'ai pas de syntaxe invalide...
        Sinon i>10 devrait être i<10 non ?
        Et pour avoir un meilleur 'rendu' je te conseille de rajouter

        sep=''
        

        à ton print :o



        Dac,
        Oép je me suis trompé de sens pour le chevron...
        Par contre j'ai pas compris ce que tu veux me dire :

        Citation

        Et pour avoir un meilleur 'rendu' je te conseille de rajouter

        sep=''

        à ton print :o



        J'ai édité pour l'erreur dans la fonction.
        • Partager sur Facebook
        • Partager sur Twitter
          1 juillet 2010 à 19:20:17

          SyntaxError: inconsistent use of tabs and spaces in indentation
          Hého, les espaces ne sont pas des tabulations !
          La PEP8, elle demande 4 espaces pour indenter un bloc, pas des tabulations :

          Citation : PEP8

          Indentation

          Use 4 spaces per indentation level.

          For really old code that you don't want to mess up, you can continue to
          use 8-space tabs.

          • Partager sur Facebook
          • Partager sur Twitter
            1 juillet 2010 à 19:27:14

            Citation : ordiclic

            SyntaxError: inconsistent use of tabs and spaces in indentation
            Hého, les espaces ne sont pas des tabulations !
            La PEP8, elle demande 4 espaces pour indenter un bloc, pas des tabulations :

            Citation : PEP8

            Indentation

            Use 4 spaces per indentation level.

            For really old code that you don't want to mess up, you can continue to
            use 8-space tabs.



            Ah ok, je le savais pas ça x)
            Et tu sais si dans notepad++ il y a un moyen pour qu'il convertisse mes tabulations en 4 espaces, car je risque d'oublier avec l'habitude des autres langages :x J'ai trouvé x)

            Et sinon pour le sep='' ?

            Merci =)
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              1 juillet 2010 à 19:46:30

              Avec la version 2.6 (à toi de mettre ce code en version 3), avec une boucle for (je ne sais pas si tu la vu ou pas), ca donne ça

              def multiplication(nombre):
              	for n in xrange(11):
              		print n, "x", nombre, "=", n*nombre
              


              et le résultat

              multiplication(10)
              0 x 10 = 0
              1 x 10 = 10
              2 x 10 = 20
              3 x 10 = 30
              4 x 10 = 40
              5 x 10 = 50
              6 x 10 = 60
              7 x 10 = 70
              8 x 10 = 80
              9 x 10 = 90
              10 x 10 = 100


              • Partager sur Facebook
              • Partager sur Twitter
                1 juillet 2010 à 19:55:23

                def table(nombre=1):
                    for i in range(11):
                        print(i,'x',nombre,' = ',i*nombre)
                
                table()
                


                Merci ;)
                Par contre, est-il possible de faire executer son code en cliquand sur l'icone de notre script ? Car moi il s'ouvre et se referme trop vite :x
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  1 juillet 2010 à 20:06:11

                  Dans ton cas avec la boucle while, je te propose ceci

                  def multiplication(nombre, i=1):
                  	while i<11:
                  		print i, "x", nombre, "=", i*nombre
                  		i+=1
                  


                  Pour éviter qu'une fenêtre ne se ferme trop vite tu rajoutes un "input()"

                  def multiplication(nombre, i=1):
                  	while i<11:
                  		print i, "x", nombre, "=", i*nombre
                  		i+=1
                  
                  multiplication(10)
                  input()
                  



                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 juillet 2010 à 20:09:47

                    Ah oui, pas bête de mettre i en variable de la fonction, mais je sais pas si conventionnellement ça se fait...

                    Et pour le while, autant faire while i <= 10:

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      1 juillet 2010 à 20:13:56

                      Citation

                      Ah oui, pas bête de mettre i en variable de la fonction, mais je sais pas si conventionnellement ça se fait...



                      Ca se fait très couramment et c'est conventionnel.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 juillet 2010 à 20:24:23

                        Pour le sep tu fais ceci :
                        print(var1,var2,'texte',var3,'blabla',...,'encore',sep='')
                        

                        En fait le paramètre 'sep' sert à indiquer à print ce que tu souhaites insérer entre tes différentes variables lors du print, sa valeur par défault et un espace ' '.
                        En gros tu vas avoir ceci :
                        print('Salut','Anerax')
                        Salut Anerax
                        print('Salut','Anerax',sep='')
                        SalutAnerax
                        print('Salut','Anerax',sep='*')
                        Salut*Anerax
                        

                        A savoir qu'il existe aussi le paramètre 'end' (par défault '\n', ou un retour charriot, à vérifier) qui permet d'indiquer ce qui doit se passer après le print.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          1 juillet 2010 à 22:10:06

                          J'en profite pour poster ma petite question :-°

                          Une classe est elle une sorte de structure comme celle du langage C ?
                          Une méthode est elle bien une fonction issue d'une classe ?
                          Un objet est il bien une variable/fonction d'une méthode ?


                          Amicalement, Realmagma
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            1 juillet 2010 à 22:23:50

                            Citation

                            Une classe est elle une sorte de structure comme celle du langage C ?



                            Je ne connais pas suffisamment le C, mais en python une classe est tout à fait une structure de données.
                            On peut considérer une classe comme un module : des regroupements logiques de fonctions et de variables pour définir un comportement et un état du programme.

                            Citation

                            Une méthode est elle bien une fonction issue d'une classe ?



                            Oui, la méthode d'une classe est une fonction définie comme partie de la définition de la classe.

                            Citation

                            Un objet est il bien une variable/fonction d'une méthode ?



                            Non c'est une instance


                            • Partager sur Facebook
                            • Partager sur Twitter
                              1 juillet 2010 à 22:52:49

                              Oups, arrivé un peu tard ^^

                              J'ajouterais qu'en python tout est "objet", mais c'est une banalité.

                              Mais puisque tu t'interesses aux classes realmagma, les objets de classe en Python ont 2 propriétés intéressantes :

                              1) "Référence aux attributs" : quand tu instancies un objet à partir d'une classe, il "hérite" de toutes les variables définies dans la méthode __init__ de la classe. En gros l'objet X de la classe Maclasse possède une variable X.var du moment que "var" est définie dans __init__() de Maclasse.

                              2) "Instanciation" : pour instancier un objet à partir d'une classe il suffit de traiter la classe comme si elle était une fonction.
                              Dans l'exemple précédent pour créer X il suffit d'écrire :

                              X = Maclasse() # (si la méthode __init__ de Maclasse est sans paramétres)
                              

                              ou
                              X = Maclasse(args) # (si __init__ demande l'ensemble de paramétres "args")
                              


                              Et tu peux créer autant d'objet d'une classe que tu veux (X = Maclasse(truc), Y = Maclasse(Machin)) etc...
                              J'ajoute que les objets de classe héritent (cette fois ci le mot est le bon) de toutes les méthodes décrites dans cette classe. Méthodes que tu peux appeler comme si elles étaient des attributs de cet objet :

                              X.change_une_variable() # est un appel valide si la classe Maclasse possède une méthode "change_une_variable").
                              
                              • Partager sur Facebook
                              • Partager sur Twitter
                                2 juillet 2010 à 8:10:20

                                Citation : Lexileduval

                                1) "Référence aux attributs" : quand tu instancies un objet à partir d'une classe, il "hérite" de toutes les variables définies dans la méthode __init__ de la classe. En gros l'objet X de la classe Maclasse possède une variable X.var du moment que "var" est définie dans __init__() de Maclasse.</code>


                                Tu peux développer ? o_O
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  2 juillet 2010 à 10:23:33

                                  Pour faire simple et dans un langage plus vulgarisé, une classe définit un "type d'objet". Et elle a des attributs.

                                  Par exemple, je peux faire une classe chien comme ceci (ne t'attarde pas trop sur la syntaxe si tu ne l'as pas encore vue)

                                  class Chien(object):
                                      """Classe définissant un chien."""
                                  
                                      def __init__(self, nom, race, aboiement):
                                          """Constructeur du chien"""
                                          self.nom = nom
                                          self.race = race
                                          self.aboiement = aboiement
                                  
                                      def aboyer(self):
                                          """Faire aboyer le chien"""
                                          print ("{0} !!".format(self.aboiement))
                                  


                                  et ensuite, tu peux "instancier" cette classe, c'est-à-dire créer des objets de type "Chien" (vois ça comme des "chiens réels"), qui ont un nom, une race et qui peuvent aboyer :

                                  >>> from chien import Chien
                                  >>> chien1 = Chien("rex", "berger allemand", "WOUF")
                                  >>> chien2 = Chien("oscar", "yorkshire", "WIF")
                                  >>> for clebs in chien1, chien2:
                                  ...     print("{0} le {1} va aboyer...".format(clebs.nom, clebs.race))
                                  ...     clebs.aboyer()
                                  ... 
                                  rex le berger allemand va aboyer...
                                  WOUF !!
                                  oscar le yorkshire va aboyer...
                                  WIF !!
                                  


                                  Les attributs décrivent "l'état" du chien, ce qu'il est et ce qui le caractérise en tant que chien.
                                  Les méthodes décrivent un comportement.

                                  Ainsi, quand tu as une variable de type Chien et que tu "références" ses attributs (comme dans la boucle, où tu accèdes au nom et à la race du Chien en question, avant de lui demander d'aboyer), c'est son état à lui, qui lui est propre, que tu récupères.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Zeste de Savoir, le site qui en a dans le citron !
                                  Anonyme
                                    2 juillet 2010 à 10:49:56

                                    Citation

                                    Tu peux développer ?



                                    Je pense que Lexilduval devait parler des variables initialisé dans le constructeur __init__ .

                                    Un petit exemple :

                                    class X(object):
                                    	def __init__(self, var=2, z=5):
                                    		self.var=var
                                    		self.z=z
                                    	def calcul(self):
                                    		return self.var*self.z
                                    


                                    >>> a=X()
                                    >>> a.var
                                    2
                                    >>> a.z
                                    5
                                    >>> a.calcul()
                                    10
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      2 juillet 2010 à 12:43:43

                                      Ok merci beaucoup.

                                      (J'en suis à la partie II petit 1, je n'ai donc rien compris aux codes :o , je resortirais le topic une fois les classes vues)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        2 juillet 2010 à 22:05:49

                                        Citation : fred1599

                                        Je pense que Lexilduval devait parler des variables initialisé dans le constructeur __init__ .



                                        C'était bien ça !

                                        Et en effet c'est plus clair écrit comme tu l'as fait (et avec ton exemple).
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Anonyme
                                          2 juillet 2010 à 22:08:54

                                          Un exemple ça parle toujours bien :)
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Les methodes

                                          × 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