Adloun

mathématiques appliquées (ECG 1re année) · Chapitre 1 · Exercice

Croissance d'une liste, et la liste vide

Raisonnement et vocabulaire ensembliste · Logique et quantificateurs · niveau 3 (difficile)

É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.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre