Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python] fonction Fibonacci

Sujet résolu
    24 novembre 2021 à 21:07:14

    Bonsoir, j'ai une question: Pourquoi dans la fonction suivante couples_ados est nécessaire ? 

    def population_lapins(seuil):
        mois = 0
        couples_jeunes = 1
        couples_adultes = 0
        while couples_jeunes + couples_adultes < seuil:
            # les jeunes deviennent adultes
            couples_ados = couples_jeunes
            couples_jeunes = 0
            # les adultes donnent naissance à des jeunes
            couples_jeunes = couples_adultes
            # les ados rejoignent les adultes
            couples_adultes = couples_adultes + couples_ados
            # un mois s'est écoulé
            mois = mois + 1
        return mois

    Merci :)

    • Partager sur Facebook
    • Partager sur Twitter
      24 novembre 2021 à 21:56:01

      Parce que la ligne10 affecte un nouvel objet à la variable des jeunes et que la ligne 12 a besoin de l'ancienne valeur. C'est comme pour permuter des variables, dans certains langages il est nécessaire d'utiliser une variable dite temporaire. En Python l'affectation multiple permet de s'en passer : a, b = b, a.

      -
      Edité par ЯК 24 novembre 2021 à 21:57:13

      • Partager sur Facebook
      • Partager sur Twitter
        24 novembre 2021 à 21:57:12

        Bonjour,

        C'est un code assez étonnant pour ne pas dire mauvais, c'est quoi le but ?

        Ca ne sert à rien de faire : couples_jeunes = 0

        puis immédiatement : couples_jeunes = couples_adultes

        Voici le résultat à chaque boucle :

        (Stade : Nombre de jeunes, Nombre d'ados, Nombre d'adultes)

        population_lapins(5)
        Départ  : 1 0 0
        Arrivée : 0 1 1 
        ____________
        Départ  : 0 0 1
        Arrivée : 1 0 1 
        ____________
        Départ  : 1 0 1
        Arrivée : 1 1 2 
        ____________
        Départ  : 1 0 2
        Arrivée : 2 1 3 
        ____________


        Pour le même résultat :

        def population_lapins(seuil):
        	mois = 0
        	couples_jeunes = 1
        	couples_adultes = 0
        	while couples_jeunes + couples_adultes < seuil:
        		couples_adultes += couples_jeunes
        		couples_jeunes = couples_adultes-couples_jeunes
        		mois += 1
        	return mois

        Ou mieux :

        def population_lapins(seuil):
            mois, couples_jeunes, couples_adultes = 0, 1, 0    
            while couples_jeunes + couples_adultes < seuil:
                couples_adultes, couples_jeunes = couples_adultes + couples_jeunes, couples_adultes
                mois += 1
            return mois





        -
        Edité par ErispoeLeNarvalo 24 novembre 2021 à 22:09:43

        • Partager sur Facebook
        • Partager sur Twitter

        https://www.youtube.com/watch?v=Dv6Th7kJ64Q

          24 novembre 2021 à 22:06:20

          Ce qui est drôle ici c'est que la suite de Fibonacci est littéralement le premier exemple d'affectation multiple dans le tutoriel officiel.
          • Partager sur Facebook
          • Partager sur Twitter
            24 novembre 2021 à 22:18:27

            Bien vu ! ^^
            • Partager sur Facebook
            • Partager sur Twitter

            https://www.youtube.com/watch?v=Dv6Th7kJ64Q

              25 novembre 2021 à 7:01:00

              C'est une fonction qui a pourtant été écrite par le prof, et nous n'avons pas encore vu les affectations multiples :/
              • Partager sur Facebook
              • Partager sur Twitter
                25 novembre 2021 à 9:39:35

                LilililiMimimimi a écrit:

                C'est une fonction qui a pourtant été écrite par le prof, et nous n'avons pas encore vu les affectations multiples :/


                :o

                Il ne vous a pas appris les += -= ... (assignation augmentée) ? Assez rapidement on n'utilise plus : a = a + 1 mais a += 1 par ex.

                • Partager sur Facebook
                • Partager sur Twitter

                https://www.youtube.com/watch?v=Dv6Th7kJ64Q

                  25 novembre 2021 à 17:55:05

                  je pense que c'est pour suivre un algorithme qui a été formalisé (on passe par phase 1 puis phase 2 puis phase 3); ensuite vient la phase de simplification "mathématique" suivi d'une simplification syntaxique (a = a+b  devient a+=b) et peut-être ensuite la phase "façon pythonique"
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [Python] fonction Fibonacci

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  • Editeur
                  • Markdown