PYTHON.2 FEUILLE n°16 D'EXERCICES MAI 2012
THEME:
Manipulations basiques avec Python.2 sur les boucles
Programme permettant de conjecturer la nature d'une suite
Enchaînement de script ( ou fonctions )
------------------------------------------------------------------------------------------
EXERCICE 1
On souhaite demander à l'utilisateur un tableau ( ou liste ) sous
l'appellation LISTEdebut, puis la "cloner", à l'aide d'une boucle.
Soit T la liste ainsi obtenue par "clonage"
On peut alors faire des modifications ( des expériences) sur
le "clone" T tout en conservant LISTEdebut intacte.
( Bien entendu on peut sans boucle en posant T = LISTEdebut
obtenir la même chose. Mais il s'agit ici d'imposer une méthode.)
----------------------------------------------------------------------------------------------------
Réponse:
Programme possible:
from random import*
def dup(W):
N=len(W)
T=[0]*N
# Création d'une liste T de même longueur N que W n'ayant que des 0
# Il reste à remplir T avec les termes de W
for i in range(0,N):
# L'entier i va varier entre 0 compris et N non compris
T[i]=W[i]
#La liste T progressivement devient identique à W
print " La liste T est : T = ",T
# PROGRAMME PRINCIPAL#
######################
W=input(" Donner une liste non vide appelée Listedebut: ")
print " Listedebut=",W
print dup(W)
print "Appuyer sur Enter pour arrêter"
Par exemple :
>>>
Donner une liste non vide appelée Listedebut: [12,4,3,8]
Listedebut= [12, 4, 3, 8]
La liste T est : T = [12, 4, 3, 8]
None
Appuyer sur Enter pour arrêter
Autre variante possible du programme:
from random import*
def dup(W):
N=len(W)
T=[]
# Création d'une liste T vide
# Il reste à remplir T avec les termes de W
for i in range(N):
# L'entier i va varier entre 0 compris et N non comris
T.append(W[i])
# Attention: T[i]= W[i] ne fonctionne pas car T[i] n'existe pas encore
#La liste T progressivement devient identique à W
print " La liste T est : T = ",T
# PROGRAMME PRINCIPAL#
######################
W=input(" Donner une liste non vide appelée Listedebut: ")
print " Listedebut=",W
print dup(W)
print "Appuyer sur Enter pour arrêter"
Par exemple:
>>>
Donner une liste non vide appelée Listedebut: [1,11,45,17]
Listedebut= [1, 11, 45, 17]
La liste T est : T = [1, 11, 45, 17]
None
Appuyer sur Enter pour arrêter
--------------------------------------------------------------------------------------------
EXERCICE 2
Soit la suite récurrente ( u n ) définie sur IN par:
u 0 = 2
u n+1 = 3 u n - 2 pour tout n dans IN
On pose: wn = u n - 1 pour tout n dans IN
Faire un programme qui permet :
De conjecturer si la suite ( w n ) , à termes non nuls,
semble géométrique ou non .
Le programme devra comparer les quotient wk + 1 / wk pour k variant de 0 à N.
Si ces quotients sont tous égaux alors il est plausible que la suite ( w n )
soit géométrique.
Rédiger un tel programme.
------------------------------------------------------------------------------------------------------------------------
Réponse:
Programme possible:
import decimal
def suitu(n):
if n==0:
return 2
else:
return 3*suitu(n-1) - 2
def suitw(n):
return suitu(n)-1
def testgeom (N):
L=[]
for k in range(N):
L.append( suitw(k+1)/suitw(k))
print L
for i in range(N-1):
if L[i]==L[i+1]:
return " OUI. La suite ( w )semble géométrique."
else:
return " Non. La suite (w) n'est pas géométrique."
# PROGRAMME PRINCIPAL#
#####################
N=input(" Combien de w(k+1) /w(k) de la suite (w) voulez-vous lister? : N = ")
print testgeom(N)
Par exemple:
>>>
Combien de w(k+1) /w(k) de la suite (w) voulez-vous lister? : N = 5
[3, 3, 3, 3, 3]
OUI. La suite ( w ) semble géométrique.
Autre variante possible:
from random import*
import decimal
def suitu(n):
if n==0:
return 2
else:
return 3*suitu(n-1) - 2
def suitw(n):
return suitu(n)-1
def testgeom (N):
L=[]
for k in range(N):
L.append( suitw(k+1)/suitw(k))
print "w",k+1,"/ w",k,"=", suitw(k+1)/suitw(k)
for i in range(N-1):
if L[i]==L[i+1]:
return "OUI. La suite (w) semble géométrique. Mais c'est une conjecture"
else:
return " NON.La suite (w ) n'est pas géométrique"
# PROGRAMME PRINCIPAL #
#####################
N = input(" Combien de termes de la suite (w) voulez-vous comparer ? : N = ")
print testgeom(N)
Par exemple:
>>>
Combien de termes de la suite (w) voulez-vous comparer ? : N = 5
w 1 / w 0 = 3
w 2 / w 1 = 3
w 3 / w 2 = 3
w 4 / w 3 = 3
w 5 / w 4 = 3
OUI. La suite (w) semble géométrique. Mais c'est une conjecture
----------------------------------------------------------------------------------------
EXERCICE 3
Soit la suite récurrente ( u ) définie sur IN par:
u0 = 2
un+1 = 3 un +1 pour tout n dans IN
On pose: wn = u n − 1 pour tout n dans IN
Ecrire par analogie avec l'exercice n°2
un programme qui permet de conjecturer
si la suite ( w ) est ou n'est pas arithmétique.
-------------------------------------------------------------------------------------
REPONSE:
from random import*
import decimal
def suitu(n):
if n==0:
return 2
else:
return 3*suitu(n-1) - 2
def suitw(n):
return suitu(n)-1
def testgeom (N):
L=[]
for k in range(N):
L.append( suitw(k+1)-suitw(k))
print "w",k+1,"/ w",k,"=", suitw(k+1)-suitw(k)
for i in range(N-1):
if L[i]==L[i+1]:
return "OUI. La suite (w) semble arithmétique. Mais c'est une conjecture"
else:
return " NON.La suite (w ) n'est pas arithmétique"
# PROGRAMME PRINCIPAL #
#####################
N = input(" Combien de termes de la suite (w) voulez-vous comparer ? : N = ")
print testgeom(N)
Par exemple:
>>>
Combien de termes de la suite (w) voulez-vous comparer ? : N = 5
w 1 - w 0 = 4
w 2 - w 1 = 12
w 3 - w 2 = 36
w 4 - w 3 = 108
w 5 - w 4 = 324
NON.La suite (w ) n'est pas arithmétique
>>>
-------------------------------