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é
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