else : return(y)
Remarque : Les mots-clés def,if,else doivent se trouver en première position, donc sur des lignes di¤érentes.
def max(a) :
n = len(a) ; m=a[0]
for j in range(1,n) :
if a[j]>m : m = a[j]
return m
4) Nombre maximum de zéros (consécutifs) dans une liste
On suppose que la fonction maximum dé…nie dans l’exercice précédent est connue.
a) Ecrire une fonction nombre qui étant donnée une liste renvoie le nombre de zéros dans la liste.
Par exemple, print(nombre([1,0,2,0,0,4])) renvoie 3.
b) Ecrire une fonction consec qui étant donnée une liste renvoie le nombre maximum de zéros consécutifs dans la liste.
Par exemple, print(nombre([1,0,2,0,0,4])) renvoie 2.
Corrigé
def nombre(a) :
n = len(a) ; c=0
for j in range(0,n) :
if a[j]==0 : c += 1
return c
Remarque : On utilise un compteur c. On rappelle que c += 1 équivaut à c = c+1.
def consec(a) :
n = len(a)
c=0 ; m=0
for j in range(0,n) :
if a[j]== 0 : c += c
else : c=0 ; m=max(m,c)
return max(m,c)
Commentaire : On utilise un compteur cdont la valeur correspond au nombre de zéros conséctifs dans la séquence en
cours de lecture. On utilise aussi une variable mqui mémorise la longueur maximale des séquences déjà lues. Lorsqu’on
lit une valeur non nulle, on met à jour m(en lui attirbuant max(m,c)), et on met le compteur à 0. Il faut faire attention
à la dernière étape où on doit renvoyer max(m,c).
5) Tri par sélection
a) Ecrire une fonction indMin on renvoie l’indice du minimum (en renvoyant le plus petit s’il en existe plusieurs). Par
exemple, indMin([5,2,3,4,2]) renvoie 1(les éléments sont indicés à partir de 0).
b) Ecrire une procédure echange qui étant donnés une liste aet deux entiers iet jpermute dans a les éléments d’indices
iet j. Par exemple : a = [1,2,3,4,5] ; echange(a,0,2) ; print(a) a¢ che [3,2,1,4,5].
c) Ecrire une procédure tri qui étant donnée une liste amodi…e cette liste de sorte à trier ses éléments (sans modi…er
l’ensemble de ses valeurs). On utilisera un tri par sélection (des minima) : Le principe de l’algorithme consiste à
déterminer la position du plus petit élément et à le mettre en première position (par un échange), puis d’itérer le procédé