Initiation à Python: 6
èmeSéance Université Mohammed V de Rabat
Faculté des Sciences de Rabat Pr Bouabid El Ouahidi
[email protected]
Boucle et Fonction
Un des principes de la programmation est la factorisation du code; c’est-à-dire écrire du code une seule fois, le réutiliser à chaque fois qu’on a besoin.
On va voir deux techniques:
❑ La notion de boucle
❑ La notion de fonction (méthodes pour POO)
2ème solution
for i in range(1,7):
print(i,i*i)
Pourquoi la notion de boucle est nécessaire?
Comment faire pour afficher de i=1 à 6 les valeurs i et i**2 ? 1ère Solution
print (1, 1**2) 1 1
print(2, 2**2) 2 4
print(3, 3**2) 3 9
print(4, 4**2) 4 16
print(5, 5**2) 5 25
print(6, 6**6) 6 36
Cependant si au lieu de 6 on veut afficher jusqu’à un nombre grand (par exemple 10 000), on voit que cette solution n’est pas applicable.
L=range(7),
L vaut [0,1,2,3,4,5,6]
n=entier
for i in range(n) :
bloc d’instruction
Rappel: n,m, a,b,c entiers
❑ range(n) retourne la liste [0,1,2,3,4,….,n-2,n-1 ]
❑ range(n,m) retourne la liste [n, n+1, ….,m-1]
❑ range(a,b,c) retourne la liste [a,a+b, a+2b, ….., a+kb<c] le plus grand k.
Syntaxe de la boucle for
Ce bloc sera exécuté n fois.
Déroulement
❑ i=0, teste i<n?, le bloc est exécuté
❑ i=1, teste i<n?, le bloc est exécuté,
❑ …
❑ i=n-1, i <n?, le bloc est exécuté
❑ i=n, i<n ? Non, on sort de la boucle
La boucle while La boucle while
Python offre une autre manière d’avoir une boucle en utilisant while.
Soit l’exemple suivant avec for:
for i in range(10):
print(i, i*i)
En utilisant while maintenant:
i=0
while (i<10):
print(i, i*i) i=i+1
while while (condition):
bloc instruction
Syntaxe de la boucle while
❑ Le bloc est exécuté tant que la condition est réalisée.
❑ Il teste la condition, si c’est True, il exécute le bloc
❑ Teste à nouveau la condition, si c’est True, il exécute à nouveau le bloc
❑ Continue ainsi jusqu’à ce que la condition deviennent False, il sort de la boucle.
Exemple:
i=0
while i<7:
print(‘*’, end= ‘ ‘) i=i+1
Affichera: * * * * * * *
Déroulement:
❑i=0; il rentre dans la boucle et teste i<7? Oui il affiche * et i devient =1
❑Teste à nouveau i<7? Oui, affiche * et i devient 2
❑ ….
❑i=6, teste i<7? Oui il affiche * et i devient 7
❑Teste i<7? Non il sort de la boucle.
for vs while
A retenir :
❑ On constate qu’il n’y a ni initialisation de x ni son incrémentation dans la boucle for.
❑ Lorsque le nombre d’itérations (le passage dans la boucle) est inconnu, c’est la boucle while est plus adaptée.
for vs while
L’indice de la boucle est incrémenté automatiquement dans la boucle for.
for x in range(10):
print(‘Bonjour’)
x=0
while (x<10) :
print(‘bonjour’) x=x+1
initialisation
Condition d’arrêt
Incrémentation de x
Exemple while
Exemple: on désire saisir (et calculer la moyenne) des notes d’un étudiant dont on ne connait pas à l’avance le nombre de ces notes. On peut convenir de saisir les notes jusqu’à ce qu’on rentre une note négative.
note = input(‘donner une note’) note = float(note)
somme=0 nombre=0
while (note >=0):
nombre =nombre+1 somme=somme+note
note=input(‘Donner une autre note ? , <0 pour stopper’) note = float (note)
if nombre !=0:
print(‘la moyenne est ‘, somme/nombre)
Par exemple, il rentre:
12 18 14 6 7
-1 -1 veut dire qu’il a fini de rentrer les notes.
Le nombre de notes est = 5. Il suffit de faire (12+18+14+6+7) /5 pour avoir la moyenne.