BCPST1
Feuille d’exercices
2021-2022Lycée Henri-IV
Syntaxe du langage Python
MathématiquesDavantage de boucles Exercice 1
Écrire une fonctionproduit(n) qui renvoiePn=
n
Y
k=1
1 k2+ 1. Exercice 2
Écrire une fonctionsomme_double(n)qui renvoie X
16i<j6n
1 i+j2. Exercice 3
On suppose donné un entiern. Écrire un programme qui calcule et affiche tous les triplets pythagoriciens bornés par n, c.à.d. les triplets d’entiers (a, b, c) d’entiers non nuls et inférieurs ou égaux àntels que eta2+b2=c2.
De plus, on demande à ce qu’on triplet donné soit affiché une et une seule fois ; par exemple, on ne veut pas voir "3 4 5" puis plus loin "4 5 3".
NB :Si vous avez besoin de calculer des racines carrées, la fonction s’appellesqrt() et s’importe du modulemath, par la commandefrom math import sqrt.
Fonctions récursives Exercice 4 Factorielle
Écrire une fonction récursivefactorielle(n)qui prend en entrée un entier naturel n∈Net renvoien!.
Exercice 5 Calcul des termes d’une suite récurrente Lasuite de Fibonacci (Fn)n∈Nest définie par F0= 0,F1= 1 et
∀n∈N, Fn+2=Fn+1+Fn.
Écrire une fonction récursiveFibo(n) qui prend en entrée un entier natureln∈N et renvoieFn.
Exercice 6 Exponentiation rapide
Soientx∈Retn∈N∗. On souhaite calculerxn.
L’algorithme d’exponentiation rapide consiste à calculer xn de façon récursive, en utilisant les relations suivantes :
• Initialisation :x0= 1 etx1=x.
• Hérédité : Sin >1.
◦ Casnpair : Sin= 2k(k∈N∗), alorsxn = x2k .
◦ Casnimpair : Sin= 2k+ 1 (k∈N∗), alorsxn=x x2k
. Exemple pourn= 14 :n14= n27
=n2
n223
=n2 n22
n222
. Écrire une fonctionexpo(x,n)qui calculexn à l’aide de cette méthode.
III Types de données
Listes et chaînes de caractères Exercice 7
1. Écrire une fonctionoccurrences(L,item)qui renvoie la liste de tous les indices des occurrences deitemdansL.
2. Écrire une fonction maximum(L) qui détermine la plus grande valeur dans une liste de nombres (sans utilisermax())
3. Écrire une fonction rabote(L)qui élimine de la liste toutes les occurrences de son maximum.
Exercice 8 Que font les commandes suivantes ? 1. ["un" for k in range(4) ]
2. [k**2 for k in [2*i +1 for i in range(10)]]
3. [k** 2 for k in range(20) if k % 2 == 1]
4. [100*i + j for i in range(5) for j in range(5) ] 5. [ [ 0 for i in range (3)] for j in range (3) ] Exercice 9
1. Dans la console, construisez la liste des carrés de tous les entiers compris entre 1 et 100.
2. Écrire une fonctionlisteDesCarres2(n,p)qui renvoie la liste de tous les carrés des entiers compris entrenetp.
3. Reprendre la question 1 de l’exercice7, mais en utilisant cette fois une construc- tion de liste par compréhension.
4. Écrire une fonction intersection(L1,L2) prenant en entrée deux listes L1 et L2, chacune composée de valeurs deux à deux distinctes, et renvoyant la liste de toutes les valeurs qui sont présentes à la fois dansL1et dans L2.
Exercice 10
1. En utilisant une bouclefor, faites une fonctiones_tu_la_for(L,item)qui ren- voieTrue siitemfait partie des éléments de la listeL.
2. En utilisant une bouclewhile, faites une fonction es_tu_la_while(L,item)qui a la même fonction.
Feuille d’exercices : Informatique I – Syntaxe du langage Python
Exercice 11
1. Que contient la variableLquand on tape la ligne suivante dans la console :
>>> L = [ [ ] ] * 3
2. On tape la ligne suivante après le code qui précède. Que contient alorsL?
>>> L[0].append(3) Exercice 12
Écrire une fonctioncopieListe(L)qui renvoie une copie de la liste donnée en entrée (sans utiliser.copy()).
Exercice 13
1. Écrire une fonctioninverse_1(L)qui renvoie une liste contenant les mêmes élé- ments queL, mais dans l’ordre inverse (sans utiliser.reverse()).
2. Écrire une fonctioninverse_2(L)qui ne renvoie rien mais qui inverse l’ordre des éléments deL.
Exercice 14
1. Écrire une fonctionyatil_un_seul_k(chaine) qui prend en entrée une chaine de caractère et qui renvoie True si cette chaîne contient exactement un « k » (minuscule ou majuscule) etFalsesinon.
2. Écrire une fonction inclusion(L1,L2)qui renvoieTrue si et seulement si tous les éléments de la listeL1 sont dans la liste L2(sans considération d’ordre), et Falsesinon.
3. Écrire une fonctionpositivite(f,L)qui prend une fonctionf()et une listeL et qui renvoieTrue si :∀x∈maliste, f(x)>0 (et renvoieFalse sinon).
4. Écrire une fonctiondisjoint(L1,L2)qui renvoieTruesi et seulement si les listes L1et L2n’ont aucun élément en commun, etFalsesinon.
Exercice 15
Écrire une fonctionunion(L1,L2)qui prend en entrée deux listesL1etL2, chacune composée de valeurs deux à deux distinctes, et qui renvoie une liste représentant la réunion de ces deux ensembles de valeurs.
La liste renvoyée doit, elle aussi, être composée de valeurs deux à deux distinctes.
Par exemple, on veut queunion([1,2,4],[4,1,6])renvoie[1,2,4,6].
Dictionnaires Exercice 16
Écrire une fonctionminimum(D)qui prend en entrée un dictionnaire à valeurs numé- riques, et renvoie la clé associée à la plus grande valeur présente dansD.Si plusieurs clés conviennent, on veut juste que la fonction renvoie l’une d’entre elles.
Exercice 17
1. Écrire une fonctionfiltre(D)qui prend en entrée un dictionnaire dont les valeurs sont des nombres, et qui renvoie le sous-dictionnaire deD où l’on n’a gardé que les entrées associées à des valeurs positives. Par exemple, siD={"a":1, "b":-2,
"c":3}, la fonction doit renvoyer{"a":1, "c":3}.
Le dictionnaireDinitial ne doit pas être modifié.
2. Écrire une fonction filtre2(D) qui fait la même chose que filtre(D), mais modifie directementDsans rien renvoyer.
Exercice 18 Construction d’un index
1. Écrire une fonctionindex(L)qui prend en entrée une listeLet renvoie unin- dex de ses éléments, c’est-à-dire un dictionnaire dont les clés sont les éléments deLet les valeurs associées sont les positions de ces éléments dansL.
Par exemple, siL=[37, 12, 12, 42, 37, 12], l’index associé est {37:[0 ,4] , 12:[1 ,2 ,5] , 42:[3]}
2. En utilisant la fonction précédente, écrire une fonctionuniques(L)qui renvoie la liste de tous les éléments de Ln’apparaissant qu’une seule fois dansL.
Typage et Transtypage Exercice 19
Écrire une fonctionlisteDesChiffres(n)qui prend un nombrenen entrée et qui renvoie :
• la liste vide sinn’est pas un entier positif
• la liste des chiffres de n sinon (attention, chacun des éléments de cette liste doit être de typeint).
Exercice 20
Écrire une fonction listeDesChiffres2(n)qui réalise la même chose que la fonc- tionlisteDesChiffres(n)de l’exercice précédent, mais en utilisant cette fois une construction de liste par compréhension.
Exercice 21 Tables de multiplications
Faire une programme qui affiche les tables de multiplications, sous la forme : Table de 1
1x1 = 1 1x2 = 2 1x3 = 3 ...
Table de 2 2x1 = 1 2x2 = 4 ...