Lycée Lavoisier, PCSI 2025–2026
▷ Vous pouvez aussi essayer de voir ce que donne l’addition d’un nombre
avec une liste, ou l’addition de deux listes.
TP 1 : Introduction à Python 10 a = 22
11 b = 3
12 c = a - b # Que vaut c ?
q = a // b # Quotient de la division de a par b
I Introduction 13
14 r = a % b # Reste de la division de a par b , Calculer q et r
15 # de t ê te avant de v é rifier le calcul par Python .
Au cours de vos études en CPGE, vous allez apprendre un langage informa-
16 # Rappel : a = bq + r avec 0 <= r < b .
tique nommé Python. Pour coder en Python, on utilisera un EDI (pour envi-
ronnement de développement intégré) nommé Spyder * . L’objectif étant d’ar-
▷ Comprenez que si a et b sont deux variables déjà définies, alors les instruc-
river aux concours avec des bases solides vous permettant de résoudre des pro-
tions a=b et b=a ne sont pas du tout équivalentes. La première modifie la
blèmes à l’aide d’algorithmes que vous avez programmé.
valeur de la variable a qui prend la valeur de b, la seconde fait l’inverse.
▷ Le «=» est en fait ici un symbole d’affectation de valeur † .
II Variables
Exercice 1 899
Une variable permet de stocker une information dans la mémoire de votre
machine. Pour cela, il faut deux choses le nom de la variable et sa valeur. Voici, Prédire ce que seront les valeurs des variables a et b à la fin du script
plusieurs exemples, tapez-les dans l’éditeur de script et exécutez le script. suivant, puis taper le code pour vérifier votre prédiction.
La commande print permet d’afficher la valeur de la variable. 17 a = 10
1 a = 2 # Cr é e une variable not é e a dont la valeur est 2 18 b = 5
2 nd = 0.5 19 a = a+b
3 print ( " La valeur de a vaut " ,a ) 20 b = a+b
4 a = ( a +2* nd ) /3 # Modifie la valeur de a mais pas celle de 21 b = a
nd 22 b = 2* b
print ( " La valeur de a vaut " ,a )
899
5
6 L = [1 ,2 ,8] # L est une liste qui contient 3 é l é ments : 1 , Exercice 2
2 et 8 Étant données deux variables a et b, écrire un script qui échange les
7 print ( " La liste L est " , L )
valeurs de a et b (la commande a,b=b,a est bien évidemment interdite).
8 s = " les maths , c ’ est g é nial " # s est une cha î ne de caract
è res Tester si cela fonctionne.
9 print ( s )
III Fonctions
Remarque 1. ▷ On peut évidemment effectuer les opérations usuelles sur
les variables qui sont des nombres. Comme en mathématiques, une fonction, en Python, renvoie un
résultat qui dépend des arguments donnés en entrée.
▷ Pour savoir de quel type sont les variables, utiliser la commande type, es-
sayer : les commandes type(a), type(s), type(c), type(0.2).
†. Certains langages notent a←b pour souligner que la variable a va changer de valeur et
*. une alternative étant l’IDE appelé Pyzo prendre celle de b. On lit «a reçoit b» ou encore «on affecte (la valeur de) b à a»
Lycée Lavoisier, PCSI 2025–2026
▷ On définit une fonction en expliquant à la machine l’algorithme de
return. Dans un premier temps, vous pouvez naïvement gar-
la fonction.
Analogie en mathématiques : «Pour tout x > 0, f (x) = x 2 − 1.» " der en tête qu’«une fonction commence par un def et se ter-
mine par un return».
▷ On appelle une fonction lorsqu’on l’utilise dans un programme.
Analogie en mathématiques : «Considèrons a = f (5).»
▷ Contrairement aux fonctions vues au lycée, une fonction Python IV Conditions
peut prendre un ou plusieurs arguments, de même type, ou non !
Il est possible de n’avoir aucun paramètre, dans ce cas on laisse les IV.1 Définition
parenthèses sans rien dedans def MaFonction(): Les conditions permettent d’effectuer certaines instructions unique-
▷ ♥ La définition d’une fonction commence toujours par un def et ment dans certains cas. Par exemple, si a et b sont des nombres, on
se termine toujours par un return ! On n’oublie pas les deux points effectuer une instruction que si a > b ou si a ≥ b ou encore si a = b.
après avoir donné le nom de la fonction et ses éventuels arguments. Comment décrire ces cas en Python ?
▷ Les instructions qui sont dans le corps de la fonction doivent subir Recopier ce code, et exécutez le plusieurs fois, en faisant changer la
une indentation. valeur de la variable age.
▷ Une fonction peut ne rien renvoyer. Dans ce cas, on termine par 29 age = 17 # La variable age vaut 17
return tout simplement. Cela signifie à la machine que le corps de 30 if age == 18: # Le == est indispensable pour ne pas
31 # confondre avec l ’ affectation de variable age = 18
la fonction est terminé.
32 print ( " Tu es à peine majeur " )
33 if age >= 18:
23 def FonctionMystere (a ,b , c ) : 34 print ( " Tu es d é j à vieux " )
24 s = a+b+c 35 if age < 18:
25 m = s /3 36 print ( " Tu es un b é b é " )
26 return m 37 attente = 18 - age
Dans cet exemple, la fonction FonctionMystere prend plusieurs ar- 38 print ( " Attends " , attente , " ann é e ( s ) avant ta majorit
é")
guments en entrée : a, b et c. Cette fonction renvoie la valeur m.
39 if age != 0 and age < 18: # != veut dire diff é rent
Exercice 3 899 40 print ( " Tu as v é cu au moins une ann é e mais tu es
mineur " )
Taper ces lignes et exécuter. Que se passe-t-il ? Essayer maintenant la
commande suivante et indiquer ce que calcule la fonction mystère :
27 Resultat = FonctionMystere (5 ,10 ,14)
Définition 1
28 print ( Resultat ) Une condition est une expression dont le résultat est soit « vrai »
soit « faux ». Une condition peut être construite à l’aide :
Il ne faut pas confondre return et print ! La commande
" print affiche la valeur d’un calcul mais ne la stocke pas dans
• d’opérateurs de comparaison : >, <, <=, =>, == ou ! =.
une variable, pour cela, en fin de fonction, il faut utiliser • d’opérateurs logiques : and, or, not.
Lycée Lavoisier, PCSI 2025–2026
Une instruction conditionnelle est une instruction qui n’est exécutée ♥ On n’oublie pas de tester sa fonction en l’appelant après sa défini-
que si une condition est réalisée. La condition est suivie de deux points. tion avec plusieurs valeurs possibles !
Les instructions liées à la condition doivent être indentées. Exercice 5 899
Créer une fonction à un paramètre entier n qui renvoie True si n est
IV.2 Structures conditionnelles pair et False si n est impair. Pour savoir si n est pair ou impair, utiliser le
reste de la division euclidienne de n par 2. La première ligne sera donc :
Définition 2
• La structure if... else permet d’exécuter des instructions 42 def SuisJePair ( n ) :
si une condition est réalisée et d’autres instructions sinon.
Exemple :
Vocabulaire
1 a = 4
2 if 6* a -4 >1: True et False sont ce qu’on appelle des booléens. C’est un cer-
3 x = 3 tain type de variable en Python. Les booléens correspondent au
4 else : Vrai et Faux du cours de logique.
5 x =4
6
7 print ( x ) Exercice 6 899
On considère une équation du second degré ax 2 + bx + c = 0.
• La structure if... elif... else permet d’utiliser plu-
sieurs conditions qui s’excluent l’une l’[Link] est possible
d’utiliser autant de elif qu’on le souhaite. 1. Écrire une fonction, qui prend en argument des paramètres a, b et c,
Exemple : et qui renvoie le nombre de solutions de l’équation du second degré.
1 a = -2 La première ligne sera donc
2 if 6* a -4 == 0:
3 x = 3 43 def M aFonc tionTr inome (a ,b , c ) :
4 elif 6* a -4 >0:
5 x = 2
6 else : 2. Modifier cette fonction, pour qu’elle renvoie aussi les éventuelles so-
7 x = 4 lutions.
8
9 print ( x )
Indication : 3**0.5 renvoie la racine carré de 3, si jamais vous avez
deux solutions x et y, vous tapez donc un return 2,x,y
Tester avec a=1, b=0 et c=1 ainsi qu’avec a=1, b=0 et c=-9.
Exercice 4 899
3. Évidemment si a=0 ce n’est pas une équation du second degré. Mo-
Créer une fonction qui prend en paramètre x et renvoie sa valeur ab-
difier le programme pour en tenir compte. ‡
solue. La première ligne sera donc :
41 def M a F o n c t i o n V a l e u r A b s o l u e ( x ) : ‡. Never trust user input : dans un programme, il faut essayer de parer les bugs qui pourraient
être causer par des valeurs absurdes rentrées par un utilisateur
Lycée Lavoisier, PCSI 2025–2026
V Boucles bornées et non bornées Exercice 7 899
Définition 3 Une boucle for permet, par exemple, de calculer des sommes : suppo-
sons que l’on veuille calculer S = 0 + 1 + 2 + 3 + . . . + n, Pour cela, définir
Les boucles en informatique permettent de répéter une instruc- une variable S à 0, créer une boucle où i prendra toutes les valeurs de 0
tion autant de fois que nécessaire. Il y a deux types de boucles en à n, à chaque étape, S devient S+i. Écrire ce script, avec une variable n
informatique : puis tester pour n = 100, est-ce cohérent avec votre raisonnement ma-
thématique ?
• les boucles bornées, ou boucles for, où l’on précise dès le dé-
but combien de fois il faut répéter l’opération, Exercice 8 899
Considérons une suite (u n )n∈N telle que u 0 = 2 et pour tout n ∈ N,
• et les boucles non bornées, ou boucles while, où l’on donne
u n = 2 × u n−1 + 3.
une condition d’arrêt.
1. Écrire un script, permettant de calculer u 100 .
Indication : les deux derniers chiffres de u 100 sont 7 et 7.
V.1 Prérequis : la commande range
2. Adapter ce qui précède pour écrire une fonction ayant pour para-
Définition 4 mètre n renvoyant la valeur de u n . Ainsi la première ligne sera :
Pour a et b deux entiers, range(a,b) permet d’obtenir l’en- 46 def MaSuite ( n ) :
semble ordonné des nombres entre a et b − 1. range(b) est
Remarque 2. Les mots clefs sont for et in. Comme en mathématique,
un raccourci désignant range(0,b). On peut aussi utiliser
la variable muette n’a pas forcément à intervenir dans les commandes à
range(a,b,c) pour préciser le pas (l’écart entre les valeurs). répéter. On attire l’attention sur les deux choses suivantes :
• Il ne faut pas oublier : dans le code.
V.2 Boucles bornées : la boucle for
• L’indentation est primordiale. C’est elle qui signifie à Python com-
Définition 5 ment sont organisés les blocs de codes à exécuter et leur agence-
ments entre eux, à la manière des parenthèses pour organiser un
La boucle for permet de répéter une instruction pour chaque va- calcul en mathématiques.
leur d’une variable muette évoluant dans une liste de nombres
prédéfinie.
V.3 Boucles non bornées : la boucle while
Recopier et exécuter les lignes suivantes : Définition 6
44 for i in range (10) : Avec une boucle while, on répète la ou les instructions associées
45 print ( " Ligne " ,i , " : en CPGE , je travaille r é guli è tant qu’une condition d’arrêt n’est pas vérifiée.
rement . " )
Prenons, par exemple, un nombre x, et supposons qu’on le divise par
" Il faut faire attention à la première et à la dernière valeur
prises par la boucle. C’est un piège classique.
5 tant que x est supérieur ou égale à 5. Contrairement à une boucle for,
ici on n’a aucune idée de combien de fois on va diviser x par 5. Cela
donne le code suivant :
Lycée Lavoisier, PCSI 2025–2026
47 x =182 La conjecture de Syracuse est l’hypothèse que pour tout entier n ≥ 2, on
48 while x >=5: finit par arriver à 4, 2 ou 1. À ce jour, personne n’a jamais réussi à le dé-
49 x = x /5 montrer.
print ( x ) # Comme on a fini la boucle while , x <5
899
50
Exercice 11
Exercice 9 899 Créer une fonction qui dépend de deux paramètres a et b (deux en-
Rajouter, dans le code précédent, une variable compteur qui compte tiers positifs et b ̸= 0). et qui renvoie q et r le quotient et le reste de la
le nombre de fois où on a divisé par 5. division euclidienne de a par b.
On n’utilisera évidemment pas les commandes % et \\. À la place, on re-
Attention aux boucles infinies ! La boucle while continue tant tirera b à a jusqu’à obtenir un reste plus petit que b.
que la condition est vérifiée. Aussi, il faut être sûr qu’il n’y a
qu’un nombre fini d’étapes. Sinon, vous êtes condamnées à VI Listes
attendre une éternité, ou, dans la pratique, à faire surchauffer
" votre machine qui ne répondra plus.
Ne tentez donc pas d’écrire un code comme celui-ci :
Définition 7
Une liste est une collection ordonnée d’éléments. On peut coder
51 x = 182 des listes en Python en utilisant les crochets. Leur type est : list.
52 while x >= 5 and x != 8:
53 x = x +1
Nous détaillons peu les listes ici, car nous y reviendrons dans un futur
TP. Voici toutefois quelques commandes sur les listes :
Exercice 10 889 • L[k] renvoie le k-ième élément de la liste L.
1. Créer une fonction S, qui a un entier naturel n renvoie la moitié de n • len(L) renvoie le nombre d’éléments de la liste L.
si n est pair et 3n+1 sinon. • [Link](a) rajoute l’élément a à la fin de la liste L.
2. Partant de n = 10, calculer, à la main, S(n), puis S(S(n)) puis Remarque 3. La commande range renvoie en réalité une liste. Les listes
S(S(S(n))) etc. Que constatez-vous ? range sont fréquemment utilisées et ont un type spécialisé : le type
range.
3. Soit N une variable entière et positive. Écrire un script qui transforme
N en S(N ) tant que N est différent de 4, 2 et 1. Afficher au fur et à Taper le code suivant :
mesure les valeurs prises par la variable N. 54 L = [ -10 ,5 , -10 ,8]
55 print ( L [0])
4. Tester pour différentes valeurs de N. 56 print ( L [1])
57 print ( L [2])
5. Modifier le script pour compter combien il faut d’étapes pour arriver 58 print ( L [3])
à 4, 2 ou 1. 59 print ( L [4]) # Provoque une erreur ! Pourquoi ?
60 print ( L [ -1])
6. Parmi tous les nombres entre trois et un million, quel(s) est(sont) 61 L [2] = 23 # Modifie la valeur du troisi è me é l é ment de L
le(les) nombre(s) où il a fallu le plus d’étapes ? Quel est ce nombre 62 print ( L )
d’étapes maximum ? 63 print ( len ( L ) ) # Affiche le nombre d ’é l é ments
Lycée Lavoisier, PCSI 2025–2026
La numérotation commence à 0 ! L[1] ne renvoie pas la va-
leur du premier élément de la liste mais du deuxième !
" Dans le jargon, on dit que «array starts at 0». a
a. Selon le langage de programmation utilisé, les listes sont initialisées soit à 0,
soit à 1.
Exercice 12 899
Écrire une fonction prenant en argument une liste et qui, à l’aide
d’une boucle for, affiche tous les éléments de cette liste. Voici un
exemple de fonction qui ne renvoie rien !
Exercice 13 899
Écrire une fonction prenant en argument une liste et qui, à l’aide
d’une boucle for, renvoie la somme de tous les éléments de cette liste.
On pourra s’aider d’une variable S à qui on ajoute à l’étape k de la boucle
le k-ième élément de la liste.
Exercice 14 888
Un triplet pythagoricien est la donnée de trois entiers naturels non
nuls (a,b,c) avec c 2 = a 2 + b 2 .
1. Donner un exemple d’un tel triplet.
2. Écrire un script, qui compte combien il y a de tels triplets (a,b,c)
avec a, b et c inférieurs ou égals à 1000 et avec a ≤ b.
3. Modifier le script à la question précédente, pour avoir la liste de tous
ces triplets. On pourra s’inspirer des lignes suivantes :
64 L = [] # Cr é e une liste vide
65 T = (4 ,5 ,6) # Cr é e un triplet
66 L . append ( T ) # Rajoute à la liste L le triplet T