SHNU Programmation en Python 2019–2020 TD 2 - Itérables et fonctions
Pensez à utiliserreturnetbreakintelligemment dans les questions ci-dessous pour que vos fonctions et vos boucles se terminent plus rapidement.
Listes et fonctions
Exercice 1: Parité.
1. Écrivez une fonction prenant une liste d’entiers en paramètre et affichant chacun de ses éléments un par un suivi de'Pair's’il est pair et 'Impair'sinon. Par exemple:
1 >>> parite([1, 2, 4])
2 1 impair
3 2 pair
4 4 pair
2. Écrivez une fonction prenant une liste d’entiers en paramètre et affichant'Tous pairs'sitous ses éléments sont pairs, et'Pas tous pairs's’il y a au moins un nombre impair dedans. Par exemple:
1 >>> tous_pairs([1, 2, 4])
2 'Pas tous pairs'
Exercice 2: Renversement de liste.
Écrivez une fonction qui prend une liste en paramètre et la renversesans utiliser une autre liste, ni reversed(), ni list.reverse(). Voici ce que devra faire votre fonction sur un exemple:
1 >>> lst = [1, 2, 3, 4, 5]
2 >>> renverser(lst)
3 >>> lst
4 [5, 4, 3, 2, 1]
Exercice 3: Inclusion.
Écrivez une fonction prenant deux listesLetRen paramètres et renvoyantTruesitousles éléments de L sont dans R, et False sinon. On suppose que L ne contient pas de doublons. Vous pouvez utiliser in dans une boucle for, mais pas pour vérifier l’appartenance. Par exemple:
1 >>> inclusion([1, 2], [1, 2, 3])
2 True
3 >>> inclusion([1, 3], [2, 3, 4])
4 False
Exercice 4: Liste triée.
Pour les questions qui suivent, vous ne pouvez pas utilisersorted()nilist.sort().
1. Écrivez une fonction qui vérifie qu’une liste passée en paramètre est triée dans l’ordre croissant (on renvoie Truesi elle est triée,False sinon).
2. Écrivez une fonction qui vérifie qu’une liste passée en paramètre est triée dans l’ordredécrois- sant (on renvoie True si elle est triée, False sinon). Ne réutilisez pas votre réponse à la question précédente.
3. Écrivez une fonction qui prend une liste en paramètre et qui renvoie 1 si elle est triée dans l’ordre croissant, −1si elle est triée dans l’ordre décroissant, ou 0 sinon. Essayez d’écrire une fonction n’utilisant qu’une seule boucle et n’appelant pas d’autre fonction.
Exercice 5: Opérations ensemblistes sur des listes.
On veut écrire des fonctions qui permettent de réaliser des opérations sur les listes comme s’il s’agissait d’ensembles. Dans les questions ci-dessous, on suppose que les deux listes premiere et seconde données en paramètres aux fonctions ne contiennent pas de doublons. Vos fonctions ne peuvent modifier ni premiere niseconde. L’ordre des éléments n’est pas important.
Page 1 / 3
SHNU Programmation en Python 2019–2020 1. Écrivez une fonction renvoyant une nouvelle liste contenant les éléments de premiere et
seconde sans doublons. Voici un exemple d’utilisation:
1 >>> union([1, 2, 3], [2, 3, 4])
2 [1, 2, 3, 4]
2. Écrivez une fonction renvoyant une nouvelle liste contenant les éléments apparaissant dans premiereetseconde. Voici un exemple d’utilisation:
1 >>> intersection([1, 2, 3], [2, 3, 4])
2 [2, 3]
3. Écrivez une fonction renvoyant une nouvelle liste contenant les éléments n’apparaissant que danspremiereou que dansseconde. Voici un exemple d’utilisation:
1 >>> difference_symetrique([1, 2, 3], [2, 3, 4])
2 [1, 4]
Exercice 6: Génération de nombres premiers.
Pour rappel, un naturel n ≥ 2 est premier s’il possède exactement deux diviseurs. La liste des nombres premiers est infinie et commence par 2, 3, 5, 7, 11, 13, 17, ... . Lecrible d’Erathostène est une méthode qui génère tous les nombres premiers inférieurs ou égaux à un naturelndonné. Cette méthode procède en deux étapes:
1. on crée la liste de tous les nombres compris entre 2etn;
2. pour chaque nombre entre2 et√
n, on retire tous ses multiples à part le premier.
Écrivez une fonction se basant sur cette méthode pour renvoyer tous les nombres premiers inférieurs ou égaux à un naturelndonné. Par exemple:
1 >>> crible(19)
2 [2, 3, 5, 7, 11, 13, 17, 19]
Boucles while
Exercice 7: Échauffement.
Écrivez une fonction demandant un entiernà l’utilisateur et renvoyant cet entier, en lui demandant de recommencer tant quenn’est pas compris entre deux autres entiersaetbdonnés (a≤b). Pour simplifier, vous pouvez supposer que le transtypage fonctionnera.
Exercice 8: Somme de chiffres.
Écrivez une fonction qui renvoie la somme des chiffres d’un naturel qu’on lui passe en paramètre.
Vous ne pouvez pas utiliser le transtypage. Par exemple:
1 >>> somme(9650165489)
2 53 # = 9 + 6 + 5 + 0 + 1 + 6 + 5 + 4 + 8 + 9
Exercice 9: Manipulation de nombres.
1. Écrivez une fonction renvoyant la liste des diviseurs d’un naturel. Par exemple:
1 >>> diviseurs(12)
2 [1, 2, 3, 4, 6, 12]
2. Pour rappel, un natureln≥2estpremier s’il possède exactement deux diviseurs. Écrivez une fonction renvoyantTrue si le naturel passé en paramètre est premier, etFalse sinon.
Page 2 / 3
SHNU Programmation en Python 2019–2020 3. Lafactorisation première d’un natureln≥2est son expression en le produit de puissances de
nombres premiers. Par exemple, la factorisation première de 17 146 080 000 est 17 146 080 000 = 28∗37∗54∗72.
Écrivez une fonction renvoyant la factorisation première d’un naturel sous la forme d’une liste de tuples, dont le premier élément est un nombre premier et le second son exposant. Pour l’exemple ci-dessus, on aura:
1 >>> factorisation(17146080000)
2 [(2, 8), (3, 7), (5, 4), (7, 2)]
Page 3 / 3