Python au lycée (5) : Les listes Exercices

Liste définie en compréhension

Durée estimée
5 minutes
Difficulté
Votre progression

Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.

Créer un compte

Objectif travaillé

Exercices

On souhaite écrire une fonction nommée fini_par_1 qui prend deux arguments entiers naturels a et b et qui retourne la liste des entiers compris, au sens large, entre a et b dont le chiffre des unités est égal à 1.

Par exemple, on souhaite que fini_par_1(0, 21) retourne la liste [1, 11, 21]

Il faut que cette fonction ne contienne qu'une unique commande (qui peut toutefois faire appel à plusieurs instructions) suivant le modèle ci-dessous :

def fini_par_1(a, b) :
   return ...

Indications :

  • On utilisera une liste définie en compréhension.
  • On rappelle que l'instruction x % y renvoie le reste de la division euclidienne de x par y.

Test :

Pour vérifier votre réponse, testez votre fonction avec les commandes :

>>> fini_par_1(0,1)
>>> fini_par_1(1,11)
>>> fini_par_1(10,50)
>>> fini_par_1(10,51)
>>> fini_par_1(100,50)

Corrigé

Voici une fonction possible :

def fini_par_1(a, b) :
   return [x for x in range(a,b+1) if x%10==1]

Explications :

  • range(a,b+1) retourne les entiers naturels compris entre a et b. On filtre ensuite cette liste à l'aide d'une instruction if.
  • x %10 retourne le reste de la division euclidienne de x par 10, c'est à dire le dernier chiffre de x. On teste alors si ce chiffre est égal à 1.

Test :

Voici les listes renvoyées par cette fonction pour les exemples donnés dans l'énoncé :

>>> fini_par_1(0,1)
[1]
>>> fini_par_1(1,11)
[1, 11]
>>> fini_par_1(10,50)
[11, 21, 31, 41]
>>> fini_par_1(10,51)
[11, 21, 31, 41, 51]
>>> fini_par_1(100,50)
[] # car 100 > 50