teaching:progappchim:suite_de_fibonacci-3

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
teaching:progappchim:suite_de_fibonacci-3 [2013/10/24 09:25] villersdteaching:progappchim:suite_de_fibonacci-3 [2017/02/24 08:52] (Version actuelle) villersd
Ligne 3: Ligne 3:
 Voici la structure que doit avoir un programme pour lequel le calcul de l'élément d'indice n de la suite de Fibonacci est encapsulé dans une fonction : Voici la structure que doit avoir un programme pour lequel le calcul de l'élément d'indice n de la suite de Fibonacci est encapsulé dans une fonction :
  
-<sxh python; title : fibonacci05_fonction.py>+<code python fibonacci05_fonction.py>
 #! /usr/bin/env python #! /usr/bin/env python
 # -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
Ligne 19: Ligne 19:
     # le programme "principal" ....     # le programme "principal" ....
          
-</sxh>+</code>
  
-Le rôle de la structure conditionnelle **<nowiki>if __name__ == '__main__':</nowiki>** est de n'exécuter la suite du code **que** si le programme python concerné est le programme principal. Il se peut en effet que ce fichier soit appelé en tant que module par une directive d'importation écrite dans un autre programme. Dans ce dernier cas, le code qui suit la ligne **<nowiki>if __name__ == '__main__':</nowiki>** ne sera pas lancé, mais toutes les fonctions définies seront reconnues et utilisables par le programme appelant !+Le rôle de la structure conditionnelle **<nowiki>if __name__ == '__main__':</nowiki>** est de n'exécuter la suite du code **que** si le programme python concerné est le programme principal (explications plus complètes [[teaching:progappchim:notions_fondamentales#test_sur_le_programme_main|ici]]).
  
 Voici une proposition complète : Voici une proposition complète :
-<sxh python; title : fibonacci05_fonction.py>+<code python fibonacci05_fonction.py>
 #! /usr/bin/env python #! /usr/bin/env python
 # -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
Ligne 36: Ligne 36:
     """     """
     a, b = 0, 1     a, b = 0, 1
-    if n==0: +    if n == 0: 
-        return 0 +        return 
-    for i in range(n):+    elif n == 1: 
 +        return b 
 +    for i in range(1,n):
         a, b = b, a + b         a, b = b, a + b
     return b     return b
  
 if __name__ == '__main__': if __name__ == '__main__':
-    i=input("Suite de Fibonacci. Donnez l'indice de l'élément souhaité ? ") +    i = int(input("Suite de Fibonacci. Donnez l'indice de l'élément souhaité ? ")
-    print ("Élément de la suite : "), +    print("Élément de la suite : "), 
-    print fibonacci_item(i) +    print(fibonacci_item(i)
-    print ('Premiers éléments de la suite : ')+    print('Premiers éléments de la suite : ')
     for j in range(10):     for j in range(10):
-        print j,fibonacci_item(j) +        print(j,fibonacci_item(j)
-</sxh>+</code>
  
 On peut compléter les fonctionnalités par une fonction **fibonacci_list(n)** qui génère et renvoie la liste des éléments de la suite de Fibonacci jusqu'à l'élément n inclus. Finalement, on peut aussi proposer des alternatives (aussi efficace ?) sous forme de fonctions appelant d'autres fonctions, avec **fibonacci_list_from_items(n)** qui construirait la liste à partir de la fonction donnant un élément particulier, et **fibonacci_item_from_list(n)** qui renverrait l'élément d'indice n comme dernier élément de la liste ! On peut compléter les fonctionnalités par une fonction **fibonacci_list(n)** qui génère et renvoie la liste des éléments de la suite de Fibonacci jusqu'à l'élément n inclus. Finalement, on peut aussi proposer des alternatives (aussi efficace ?) sous forme de fonctions appelant d'autres fonctions, avec **fibonacci_list_from_items(n)** qui construirait la liste à partir de la fonction donnant un élément particulier, et **fibonacci_item_from_list(n)** qui renverrait l'élément d'indice n comme dernier élément de la liste !
  
 Voici ce que cela donne : Voici ce que cela donne :
-<sxh python; title : fibonacci06_fonctions.py>+<code python fibonacci06_fonctions.py>
 #! /usr/bin/env python #! /usr/bin/env python
 # -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
Ligne 66: Ligne 68:
     """     """
     a, b = 0, 1     a, b = 0, 1
-    if n==0: +    if n == 0: 
-        return 0 +        return 
-    for i in range(n):+    elif n == 1: 
 +        return b 
 +    for i in range(1,n):
         a, b = b, a + b         a, b = b, a + b
     return b     return b
  
 def fibonacci_list(n): def fibonacci_list(n):
- """ +    """ 
- Renvoie la liste des éléments de la suite de Fibonacci jusqu'à l'élément n inclus. +    Renvoie la liste des éléments de la suite de Fibonacci jusqu'à l'élément n inclus. 
- """ +    """ 
-    a, b,ans = 0,1,[0] +    a, b, ans = 0, 1, [0,1
-    if n==0: +    if n == 0: 
-        return ans +        return [0] 
-    for i in range(n):+    for i in range(1,n):
         a, b = b, a + b         a, b = b, a + b
         ans.append(b)         ans.append(b)
Ligne 96: Ligne 100:
  
 if __name__ == '__main__': if __name__ == '__main__':
-    i=input("Suite de Fibonacci. Donnez l'indice de l'élément souhaité ? ") +    i = int(input("Suite de Fibonacci. Donnez l'indice de l'élément souhaité ? ")
-    print ("Élément de la suite : "), +    print("Élément de la suite : "), 
-    print fibonacci_item(i) +    print(fibonacci_item(i)
-    print ('Premiers éléments de la suite : ')+    print('Premiers éléments de la suite : ')
     for j in range(10):     for j in range(10):
-        print j,fibonacci_item(j)+        print(j,fibonacci_item(j))
  
-    print ('Avec fibonacci_item_from_list : ')+    print('Avec fibonacci_item_from_list : ')
     for j in range(10):     for j in range(10):
-        print j,fibonacci_item_from_list(j)+        print(j,fibonacci_item_from_list(j))
  
  
-    print ("Liste des éléments de la suite de Fibonnaci jusqu'à l'élément souhaité, inclus : "), +    print("Liste des éléments de la suite de Fibonnaci jusqu'à l'élément souhaité, inclus : "), 
-    print fibonacci_list(i) +    print(fibonacci_list(i)
-    print ('Premières listes : ')+    print('Premières listes : ')
     for j in range(10):     for j in range(10):
-        print j,fibonacci_list(j)+        print(j,fibonacci_list(j))
  
-    print "Avec fibonacci_list_from_items"+    print("Avec fibonacci_list_from_items")
     for j in range(10):     for j in range(10):
-        print j,fibonacci_list_from_items(j) +        print(j,fibonacci_list_from_items(j)
-</sxh>+</code>
  
 Des fonctions qui appellent d'autres fonctions !  Mais que voilà une idée intéressante, qui peut déboucher sur une écriture récursive d'une fonction donnant l'élément d'indice n de la suite de Fibonacci quir par définition est la somme de l'élément d'indice n-1 de la suite de Fibonacci, et de l'élément d'indice n-2 de la suite de Fibonacci ! Des fonctions qui appellent d'autres fonctions !  Mais que voilà une idée intéressante, qui peut déboucher sur une écriture récursive d'une fonction donnant l'élément d'indice n de la suite de Fibonacci quir par définition est la somme de l'élément d'indice n-1 de la suite de Fibonacci, et de l'élément d'indice n-2 de la suite de Fibonacci !
  
-<sxh python; title : fibonacci07_fonction_recursive.py>+<code python fibonacci07_fonction_recursive.py>
 #! /usr/bin/env python #! /usr/bin/env python
 # -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
Ligne 134: Ligne 138:
     """     """
     ... (?)     ... (?)
-    return fibonacci_item_recursive(n-1)+fibonacci_item_recursive(n-2)+    return fibonacci_item_recursive(n-1) + fibonacci_item_recursive(n-2)
  
 if __name__ == '__main__': if __name__ == '__main__':
     ...     ...
-</sxh>+</code>
  
 [[suite_de_fibonacci-4|Pour la suite, cliquez ici !]] [[suite_de_fibonacci-4|Pour la suite, cliquez ici !]]
  • teaching/progappchim/suite_de_fibonacci-3.1382599552.txt.gz
  • Dernière modification : 2013/10/24 09:25
  • de villersd