MPSI - 2017/2018 Les boucles For http://pascal.delahaye1.free.fr/
Fiche n
◦06 : Les boucles For
R´edig´ee par Pascal Delahaye
Cette fiche contient des ´el`ements de cours `a assimiler pour le cours de la semaine suivante.
Vous devez imp´erativement :
• Travailler avec un ordinateur afin de v´erifier une `a une les diff´erentes instructions qui sont pr´esent´ees.
• V´erifier et confirmer votre assimilation en effectuant tous les exercices d’entrainement propos´es `a la fin du poly.
• Pr´evoir environ 1h30 de travail personnel.
Une ´evaluation de 10mn sera effectu´ee au prochain cours pour v´erifier la qualit´e de votre travail d’auto- apprentissage.
I] Introduction et syntaxe
On emploit une boucle ”for” lorsque l’on souhaite effectuer la mˆeme s´erie d’instructions un nombre de fois d´etermin´e.
D´efinition 1 : It´erable
Les 3 structures de donn´ees ”liste”, ”chaine de caract`eres” et ”tuple”, vues en d´ebut d’ann´ee sont des it´erables.
Mˆeme si elles diff`erent de part leur syntaxe et leur utilisation, elles correspondent toutes les 3 `a une collection ordonn´ees de valeurs.
1. la liste [1,2,3,4] a pour composantes les valeurs 1, 2, 3 et 4
2. la chaine ”bahut” a pour composantes les lettres ”b”, ”a”, ”h”, ”u” et ”t”
3. le tuple (a, b, c, d) a pour composante les valeursa, b,c etd.
Une boucle ”for” a la structure suivante : Structure d’une boucle ”for” :
Python
for i in iterable :
instruction(s) # Ne pas oublier l’indentation de 4 espaces
Pour la variable i prenant tour `a tour toutes les composantes de l’it´erable, on demande `a l’ordinateur d’effectuer la s´erie d’instructions qui suit.
Lorsque l’on souhaite faire varier la variable courante ”i” dep`a qpar pas de 1, l’it´erable choisi sera : range(p,q+1)
1
MPSI - 2017/2018 Les boucles For http://pascal.delahaye1.free.fr/
II] Quelques exemples ` a bien maˆıtriser
1. Affichages multiples :
Si l’on souhaite afficher `a l’´ecran tous les nombres pairs de 0 `a 20 :
Python
for i in range(1,11) : print(2*i)
2. Pour calculer la sommeS100=
100
X
k=1
1 k :
Python
S = 0
for i in range(1,101) : S = S + 1/i
3. Pour calculer le produitP100=
100
X
k=1
2k 2k+ 1 :
Python
P = 1
for k in range(1,101) : P = P*(2*k)/(2*k+1) P
4. Pour s´electionner les composantes d’indice pair d’une liste L :
Python
L = [0,1,2,3,4,5,6,7,8,9,10]
Pair = []
n = len(L)
for i in range(0,n//2 + 1): # 2*i repr´esente l’indice du terme s´electionn´e Pair.append(L[2*i])
Pair
5. Pour calculer le termeu20de la suite
u0= 1
un+1=u2n−un :
Python
U = 0
for i in range(1,21): # i repr´esente l’indice du terme de la suite calcul´e U = U^2 - U # On d´ecale d’un cran la valeur de U
U
6. Pour calculer le termeu20de la suite de Fibonacci
u0= 0 u1= 1
un+2=un+1+un
:
Python
U0,U1 = 0,1
for i in range(2,21): # i repr´esente l’indice du terme de la suite calcul´e U0, U1 = U1, U0 + U1 # on d´ecale d’un cran les valeurs u0 et U1
U1
7. SoitX = range(0,101).
Pour construire la liste Y contenant les images des valeurs de X par la fonctionf :f(x) = cos(x).
Python
from math import cos # importation de la fonction cos de la biblioth`eque math Y = []
for x in X : # x prend tour `a tous toutes les valeurs de X Y.append(cos(x))
Y
2
MPSI - 2017/2018 Les boucles For http://pascal.delahaye1.free.fr/
Plus rapidement, on peut ´egalement utiliser la syntaxe suivante, sp´ecifique au langage Python :
Python
from math import cos
Y = [cos(i) for i in range(0,101)]
8. On donne POINTS une liste contenant des couples de r´eels.
Pour d´eterminer les listes X et Y contenant respectivement les premi`eres et deuxi`emes composantes de chaque couple.
Python
X,Y = [],[]
for P in POINTS : X.append(P[0]) Y.append(P[1]) X,Y
III] Exercices
Exercice : 1
(∗) Construire une liste contenant toutes les valeurs dek2pour kallant de 1 `a 100.
Exercice : 2
(∗) D´eterminer le termeu1000 de la suite (un) d´efinie par :
u0= 0.1
un+1= 3un si 3un <1
un+1= 3un−1 si 1≤3un<2 un+1= 3un−2 sinon
.
On dit que cette suite est chaotique car une l´eg`ere modification de la valeur initiale u0 engendre des valeurs tr`es diff´erentes pourn grand. V´erifiez ceci en prenantu0= 0.1000000001
Exercice : 3 (∗)
1. Que fait le programme suivant :
Python
def mystere L : n = len(L) L1 = []
L2 = []
for k in range(0,n):
if L[k] % 2 == 0 : L1.append(L[k]) if L[k] % 3 == 0 : L2.append(L[k]) L1,L2
2. Construire alors un programme qui extrait de L1 et L2 les composantes qui sont multiples de 6.
Exercice : 4
(∗) Sachant que la somme un =P
k = 0n(−1)2
k+1
(2k+1)! converge vers π4, calculer l’approximation deπ que donne le terme u10.
Exercice : 5 (∗) On d´efinit :
3
MPSI - 2017/2018 Les boucles For http://pascal.delahaye1.free.fr/
A= 20! B= 311 C= 1−12+13−14+15−16
1. ExprimerA,B et Cen utilisant les symbˆolesP ouQ
.
2. Donner alors les instructions permettant de calculer ces 3 valeurs.
Exercice : 6 (∗)
1. Construire un programme de codage d’un texte dont le principe est de d´ecomposer le texte en deux textes regroupant pour le premier les lettres de rang paire et pour le deuxi`eme les lettres de rang impaire.
2. Construire ensuite la proc´edure de d´ecodage associ´ee.
Exercice : 7
(∗) Construire un programme de calcul du terme d’indicendes deux suites suivantes :
1. (un) :
u0= 0.5
un+1=unsin(un)
2. (vn) :
v0= 0.5 v1= 1
vn+2=vn+1vn
Exercice : 8
(∗) SoitX = range(-5,6).
Construire la liste Y contenant les images des valeurs de X par la fonctionf :f(x) = sin(x).
Exercice : 9 (∗)
1. Construire une fonction renvoyant la liste des diviseurs strictement positif d’un entier natureln.
2. Un entier naturel est dit parfait lorsqu’il est ´egal `a la somme de ses diviseurs stricts. Vous v´erifierez facilement que 6 est un nombre parfait.
En adaptant la fonction pr´ec´edente, d´eterminer une fonction bool´eenne permettant de tester si un nombre est parfait ou pas.
3. Utiliser la fonction pr´ec´edente pour d´eterminer tous les nombres parfaits compris dans l’intervalle [[1,1000]].
Exercice : 10
(∗) Construire une fonction :
- vous demandant le capital plac´e en banque, le taux d’int´erˆet annuel et la dur´ee du placement.
- vous affichant le montant de votre capital chaque ann´ee du placement.
4