PYTHON 2 FEUILLE n° 13 AVRIL- MAI 2012
Thème:
PROGRAMME SUR LES SUITES DE FIBONACCI
---------------------------------------------------------------
EXERCICE 1
Soit la suite de fibonacci ( un ) définie par:
u0 = 1
u1 = 1
un = un -1 + un -2 pour tout entier naturel n ≥ 2
Ecrire un programme principal qui appelle un script
utilisant if ...else et qui retourne la valeur du
terme d'indice n entrée par l'utilisateur.
---------------------------------------------------------------------------------------------
Réponse :
def fibonacci(n):
if n==0 or n==1:
return 1
else:
return fibonacci(n-1)+fibonacci(n-2)
# PROGRAMME PRINCIPAL#
#####################
n= int(input(" Donner l'indice n du terme de la suite souhaité : n ="))
print "u",n,"=",fibonacci(n)
print " Appuyer sur Entrée pour arrêter"
On obtient par exemple :
>>>
Donner l'indice n du terme de la suite souhaité : n = 4
un = 5
Appuyer sur Entrée pour arrêter"
On obtient par exemple :
>>>
Donner l'indice n du terme de la suite souhaité : n = 10
un = 89
Appuyer sur Entrée pour arrêter"
------------------------------------------------------------------------------------------
EXERCICE 2
Reprendre le même objectif mais avec deux modifications
• Le programme principal ( de lancement) demande la saisie de a
la valeur commune de u0 et u1.
• Le premier script appelé utlise une boucle while dès que a et n dans IN
sont les variables connues.
-----------------------------------------------------------
REPONSE:
def fibonacci2(n,a):
u0=a
u1=a
i=0
while i<n−1:
temp=u1
u1=u1+u0
u0=temp
i=i+1
return u1
# PROGRAMME PRINCIPAL de lancement automatique #
a=input("Donner la valeur du premier terme de la suite de Fibonacci a = " )
n= int(input(" Donner l'indice n du terme de la suite souhaité : n = "))
print "u",n,"=",fibonacci2(n,a)
print(" Appuyer sur Entrée pour arrêter")
Par exemple:
>>>
Donner la valeur du premier terme de la suite de Fibonacci a = 2
Donner l'indice n du terme de la suite souhaité : n = 4
u 4 = 10
Appuyer sur Entrée pour arrêter
>>>
Par exemple on retrouve :
>>>
Donner la valeur du premier terme de la suite de Fibonacci a= 1
Donner l'indice n du terme de la suite souhaité : n = 4
u 4 = 5
Appuyer sur Entrée pour arrêter
>>>
------------------------------------------------------------------------------------
EXERCICE 3
Soit la suite de fibonacci ( un ) définie sur IN* par:
u1 = 1
u2 = 1
un +2 = un + 1 + un pour tout entier naturel n≥1
Ecrire un algorithme muni d'un programme principal qui
appelle un script utilisant while et qui retourne la valeur
du terme d'indice n entré par l'utilisateur.
---------------------------------------------------------------------
Réponse:
def fibonacci2(n):
u1=1
u2=1
i=1
while (i<n):
temp=u2
u2=u1+u2
u1=temp
i=i+1
return(u2)
# PROGRAMME PRINCIPAL#
#####################
n= int(input(" Donner l'indice n du terme de la suite souhaité : n ="))
print "u",n,"=",fibonacci2(n)
print " Appuyer sur Entrée pour arrêter"
On a par exemple :
>>>
Donner l'indice n du terme de la suite souhaité : n = 10
u10 = 89
Appuyer sur Entrée pour arrêter
---------------------------------------------------------------------------------------------
Exercice 3
Ecrire un programme principal qui appelle successivement deux scripts
et qui retourne la liste ou tableau des n premiers termes de la suite quand
l'utilisateur entre n.
-----------------------------------------------------------------------------------------
Réponse: Synthèse
def fibonacci(n):
# Renvoie le terme un quand l'utilisateur entre n
if n==0 or n==1:
return 1
else:
return fibonacci(n-1)+fibonacci(n-2)
def valeurs_de_fibo(n):
Tab=[0]*n # Ainsi une listeTab de n zéros est crée
for i in range(0,n):
Tab[i]=fibonacci(i) # Les termes de Tab existent on peut les remplacer chacun
return Tab
# PROGRAMME PRINCIPAL#
#####################
n=int(input("Saisir un nombre de valeurs : n ="))
print valeurs_de_fibo(n)
On a par exemple:
>>>
Saisir un nombre de valeurs : n = 10
[1 ,1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 ],
AUTRE VARIANTE possible pour l'algo:
def fibonacci(n):
if n==0 or n==1:
return 1
else:
return fibonacci(n-1)+fibonacci(n-2)
def valeurs_de_fibo(n):
Tab=range(n) # Cela crée la liste Tab=[0,1,....n-1] si n>0 sinon Tab =[ ]
for i in range(0,n):
Tab[i]=fibonacci(i) # Tab existant chaque terme peut être remplacé
return Tab
# PROGRAMME PRINCIPAL#
#####################
n=int(input("Saisir un nombre de valeurs : n ="))
print valeurs_de_fibo(n)
Par exemple:
>>>
Saisir un nombre de valeurs : n = 0
[]
>>>
>>>
Saisir un nombre de valeurs : n = 1
[1]
>>>
>>>
Saisir un nombre de valeurs : n = 10
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
>>>
----------------------------------------------------------------------------------------------------------------
EXERCICE 5
Ecrire un programme principal qui appelle successivement deux scripts
et qui retourne la SOMME des n premiers termes de la suite de
Fibonacci quand l'utilisateur entre n dans IN ainsi que la LISTE
de ces n premiers termes..
-----------------------------------------------------------------------------------
REPONSE:
def fibonacci(n):
if n==0 or n==1:
return 1
else:
return fibonacci(n-1)+fibonacci(n-2)
def valeurs_de_fibo(n):
Tab=range(n)
S=0
for i in range(0,n):
Tab[i]=fibonacci(i)
S=S+Tab[i]
print "La somme est",S
return Tab
# PROGRAMME PRINCIPAL#
#####################
n=int(input("Saisir un nombre de valeurs : n = "))
print valeurs_de_fibo(n)
Par exemple:
>>>
Saisir un nombre de valeurs : n = 6
La somme est 20
[1, 1, 2, 3, 5, 8]
>>>
----------------------------------------------------------
EXERCICE 6
Avoir simplement la somme des n premiers termes
d'une suite ( un ) de fibonaccci de premiers termes u0 = 1 u 1 = 1
quand on saisit n.
------------------------------------------------------
REPONSE :
def fib(n):
if n==0 or n==1:
return 1
else:
return fib(n-1)+fib(n-2)
def valeurs_de_fibo(n):
S=0
for i in range(n):
S=S+fib(i)
print "La somme est"
return S
# PROGRAMME PRINCIPAL#
n=int(input("Saisir un nombre de valeurs : n = "))
print valeurs_de_fibo(n)
Par exemple :
>>>
Saisir un nombre de valeurs : n = 6
La somme est
20
>>>
Par exemple :
>>>
Saisir un nombre de valeurs : n = 6
La somme est
20
>>>
----------------------------------------------------
EXERCICE 7
Avoir le terme d'indice n et la somme S des n + 1 premiers termes et la liste L
des n+1 premiers termes de la suite ( un ) de fibonaccci de premiers termes u0 = 1 u 1 = 1
quand on saisit n.
------------------------------------------------------------------------------------------------------------
REPONSE:
from random import*
def fib(n):
if n==0 or n==1:
return 1
else:
return fib(n-1)+fib(n-2)
def valfib():
n=int(input("Saisir un entier n : n = "))
print fib(n)
S=0
L=[]
if n!=0:
for i in range(n+1):
S=S+fib(i)
L.append(fib(i))
print S
print L
else:
print 1
print [1]
PAR EXEMPLE:
>>> valfib()
Saisir un entier n : n = 0
1
1
[1]
>>> valfib()
Saisir un entier n : n = 1
1
2
[1, 1]
>>> valfib()
Saisir un entier n : n = 2
2
4
[1, 1, 2]
>>> valfib()
Saisir un entier n : n = 6
13
33
[1, 1, 2, 3, 5, 8, 13]
>>>
-------------------------------------------------------------------------