Croissance d'une liste, et la liste vide
Exercice · niveau 3 (difficile) · mathématiques appliquées (ECG 1re année), chapitre 1 — Raisonnement et vocabulaire ensembliste · Logique et quantificateurs
Énoncé
Écrire une fonction Python est_croissante(L) qui teste si la liste L est croissante. Quel énoncé quantifié cette fonction vérifie-t-elle ? Que renvoie-t-elle sur une liste vide, et pourquoi est-ce le bon choix ?
Corrigé
def est_croissante(L):
for i in range(len(L) - 1):
if L[i] > L[i+1]:
return False
return True
L'énoncé vérifié est un « pour tout » : , où est la longueur de L. La fonction ne le vérifie pas directement : elle cherche un contre-exemple, c'est-à-dire un témoin de la négation . C'est exactement la règle de négation du , devenue une boucle.
Sur la liste vide, elle renvoie True. La longueur vaut , donc range(-1) est vide, aucun tour n'a lieu et l'on atteint return True.
Et c'est le bon choix : un énoncé universel portant sur un ensemble vide d'indices est vrai — il n'y a aucun couple à comparer, donc aucun qui puisse démentir. Ce n'est pas une convention arbitraire : elle rend le résultat cohérent (toute sous-liste d'une liste croissante reste croissante, y compris la vide) et évite un cas particulier dans tous les algorithmes qui appellent cette fonction.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.