Correction de l'épreuve 2
Sujet (PDF intégré)
Exercice 1
def max_et_indice(tab):
'''
renvoie la valeur du plus grand élément de ce tableau ainsi
que l’indice de sa première apparition dans ce tableau.
'''
val_max = tab[0]
ind_max = 0
for i in range(len(tab)):
if tab[i] > val_max:
val_max = tab[i]
ind_max = i
return (val_max, ind_max)
Exercice 2
def est_un_ordre(tab):
'''
Renvoie True si tab est de longueur n et contient tous les
entiers de 1 à n, False sinon
'''
n = len(tab)
# les entiers vus lors du parcours
vus = []
for x in tab:
if x < 1 or x > n or x in vus:
return False
vus.append(x)
return True
def nombre_points_rupture(ordre):
'''
Renvoie le nombre de point de rupture de ordre qui représente
un ordre de gènes de chromosome
'''
# on vérifie que ordre est un ordre de gènes
assert est_un_ordre(ordre)
n = len(ordre)
nb = 0
if ordre[0] != 1: # le premier n'est pas 1
nb = nb + 1
i = 0
while i < n - 1:
if ordre[i+1] - ordre[i] not in [-1, 1]: # l'écart n'est pas 1
nb = nb + 1
i = i + 1
if ordre[i] != n: # le dernier n'est pas n
nb = nb + 1
return nb
On notera une erreur où le return est oublié, mais rien de dramatique
Précédent | Suivant