
Une s�lection d'exercices pour apprendre la programmation Python
Nombre d'auteurs : 6 - Nombre d'exercices : 69 - Derni�re mise � jour : 22 avril 2025
Cette page propose des exercices pour apprendre � programmer en Python.
Ces exercices, accessibles m�me aux d�butants, comprennent des �nonc�s clairs et complets suivis de solutions d�taill�es.
Formez-vous gratuitement avec les cours Python, trouvez des r�ponses � vos questions dans la FAQ Python et posez vos questions sur le forum Python.
Commentez
- Calcul de l'aire d'un cercle
- Le maximun de trois nombres
- Remplacer un caract�re par un autre dans une cha�ne de caract�res
- Gardien de phare
- Permis de chasse
- Suite de Syracuse
- Calculer l'�pargne des familles
- Le cul de chouette
- Ajouter deux nombres cod�s dans des listes
- Recherche de couples d'�l�ments d'une liste dont la somme est �gale � une valeur cible
- Trouver un chemin dans une pyramide
- Mesure de distanciation physique
Objectif : apprendre � d�finir vos fonctions personnelles sous Python.
Niveau de difficult� : d�butant
Exercice
D�finissez une fonction surfCercle(R). Cette fonction doit renvoyer la surface (l'aire) d'un cercle dont on lui a fourni le rayon R en argument. Par exemple, l'ex�cution de l'instruction :
print(surfCercle(2.5)) doit donner le r�sultat 19.635
Auteur : G�rard Swinnen
Cours : apprendre � programmer avec Python
Objectif : apprendre � d�finir vos propres fonctions dans les programmes Python.
Niveau de difficult� : d�butant
Exercice
D�finissez une fonction maximum(n1,n2,n3) qui renvoie le plus grand des 3 nombres n1, n2, n3 fournis en arguments. Par exemple, l'ex�cution de l'instruction : print(maximum(2,5,4)) doit donner le r�sultat : 5.
Auteur : G�rard Swinnen
Cours : apprendre � programmer avec Python
Objectif : apprendre � d�finir des fonctions dans Python.
Niveau de difficult� : d�butant
Exercice
D�finissez une fonction changeCar(ch,ca1,ca2,d�but,fin) qui remplace tous les caract�res ca1 par des caract�res ca2 dans la cha�ne de caract�res ch, � partir de l'indice d�but et jusqu'� l'indice fin, ces deux derniers arguments pouvant �tre omis (et dans ce cas, la cha�ne est trait�e d'une extr�mit� � l'autre). Exemples de la fonctionnalit� attendue :
Code python : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 | >>> phrase = 'Ceci est une toute petite phrase.' >>> print changeCar(phrase, ' ', '*') Ceci*est*une*toute*petite*phrase. >>> print changeCar(phrase, ' ', '*', 8, 12) Ceci est*une*toute petite phrase. >>> print changeCar(phrase, ' ', '*', 12) Ceci est une*toute*petite*phrase. >>> print changeCar(phrase, ' ', '*', fin = 12) Ceci*est*une*toute petite phrase. |
Auteur : G�rard Swinnen
Cours : apprendre � programmer avec Python
Objectif : apprendre � cr�er et utiliser des fonctions
Niveau de difficult� : d�butant
Exercice
Un gardien de phare va aux toilettes cinq fois par jour. Or les WC sont au rez-de-chauss�e�
�crire une proc�dure (donc sans return) hauteurParcourue qui re�oit deux param�tres, le nombre de marches du phare et la hauteur de chaque marche (en cm), et qui affiche :
- qu'une semaine comporte 7 jours ;
- qu'une fois en bas, le gardien doit remonter ;
- que le r�sultat est � exprimer en m.
Auteurs : Laurent Pointal, Bob Cordeau
Cours : une introduction � Python 3
Objectif : apprendre � manipuler les fonctions
Niveau de difficult� : interm�diaire
Exercice
Un permis de chasse � points remplace d�sormais le permis de chasse traditionnel. Chaque chasseur poss�de au d�part un capital de 100 points. S'il tue une poule, il perd 1 point, 3 points pour un chien, 5 points pour une vache et 10 points pour un ami. Le permis co�te 200 euros.
�crire une fonction amende qui re�oit le nombre de victimes du chasseur et qui renvoie la somme due.
Utilisez cette fonction dans un programme principal qui saisit le nombre de victimes et qui affiche la somme que le chasseur doit d�bourser.
Auteurs : Laurent Pointal, Bob Cordeau
Cours : une introduction � Python 3
Objectif : apprendre � cr�er un algorithme � l'aide de boucle
Niveau de difficult� : d�butant
Exercice
La suite (ou conjecture) de Syracuse est une suite assez originale : comme les suites classiques, chaque terme est issu du pr�c�dent. L'originalit� r�side dans le calcul des termes...
Si le terme en cours "n" est pair, alors le terme suivant est "n/2". Et s'il est impair alors le terme suivant est "3*n+1" (une variante possible nomm�e "suite compress�e" part du principe que 3*n+1 �tant forc�ment pair le terme suivant sera alors n/2 ce qui autorise alors � sauter le n/2 en calculant directement (3*n+1)/2).
Son comportement � l'avance est incalculable (il est impossible de donner le terme "n+1" sans avoir calcul� les "n" pr�c�dents). La conjecture dit que, quel que soit le nombre "n" initial (mais au moins positif), on arrivera fatalement � une finale 4, 2, 1 (ou 2, 1 pour la version compress�e). Et de l� on ne peut plus en sortir (puisque "1" est impair, le terme qui le suit est donc 3*n+1 soit 4 et l'on voit alors la boucle in�vitable (4, 2, 1, 4, 2, 1, 4, 2, 1, ...).
Mais avant d'arriver � cette finale 4, 2, 1, les nombres de la suite varient de fa�on quasi chaotique. Ce comportement erratique assimilable � celui d'une feuille tombant dans le vent a donn� naissance � un vocabulaire issu de l'a�ronautique. On nomme par exemple "dur�e de vol" le nombre de termes calculables � partir d'une valeur de d�part. Et l'"altitude" est la valeur maximale atteinte durant le calcul. Par exemple si on part de 14, la suite donnera 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 soit une dur�e de vol de 18 et une altitude de 52.
L'exercice propos� est d'�crire une fonction qui, � partir d'un nombre "n", calcule tous les termes de la suite issue de ce nombre (elle s'arr�te quand elle atteint 1). Et elle devra renvoyer finalement sous forme d'un tuple
- le nombre initial
- la dur�e de vol
- l'altitude
En suppl�ment facultatif, on pourra utiliser la fonction et son retour pour tenter de trouver un nombre "X" ayant la dur�e la plus longue et un nombre "Y" donnant l'altitude la plus haute (X et Y cherch�s par exemple dans le premier million d'entiers)...
Objectif : apprendre � r�cup�rer et organiser des informations disparates pour en extraire un r�sultat global
Niveau de difficult� : d�butant
Exercice
Soit des comptes bancaires d'individus d�finis par la liste :
Code python : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | comptes = ( {'nom': 'Boismoneau', 'prenom': 'stephane', 'epargne': 2500}, {'nom': 'Jambon', 'prenom': 'fred', 'epargne': 5000}, {'nom': 'Durois', 'prenom': 'nicolas', 'epargne': 10000}, {'nom': 'Gueux', 'prenom': 'phillipe', 'epargne': 1250}, {'nom': 'Duchan', 'prenom': 'alice', 'epargne': 4530}, {'nom': 'Lepenou', 'prenom': 'amed', 'epargne': 2200}, {'nom': 'Gueux', 'prenom': 'bernard'}, {'nom': 'Jambon', 'prenom': 'steven', 'epargne': 1670}, {'nom': 'Gueux', 'prenom': 'sylvie', 'epargne': 3}, {'nom': 'Durois', 'prenom': 'berbard', 'epargne': 300000} ) |
On consid�re que les individus qui portent le m�me nom sont de la m�me famille.
Ecrire une fonction qui regroupe et cumule l'�pargne de chaque famille
En cas d'absence de revenu attribu� � un individu, nous consid�rerons que son �pargne est nulle (cas de 'bernard Gueux').
Exemple de r�sultat attendu: {'Boismoneau': 2500, 'Jambon': 6670, 'Durois': 310000, 'Gueux': 1253, 'Duchan': 4530, 'Lepenou': 2200}
Objectif : apprendre � g�n�rer une solution
Niveau de difficult� : interm�diaire
Exercice
Dans la s�rie "Kaamelott" d'Alexandre Astier, le "cul de chouette" est le jeu favori du tavernier (Alain Chapuis) et du chevalier Karadoc (Jean-Christophe Hembert). Le but pr�sum� de ce jeu (qui n'est pas vraiment expliqu� dans la s�rie) est de jeter des d�s en tentant d'atteindre un certain total par jet.
Le but de cet exercice est d'�crire une fonction qui, pour une valeur donn�e, renvoie toutes les solutions de 3 d�s (d�s classiques allant de 1 � 6) pouvant donner cette valeur. Attention, les solutions doivent �tre uniques. Si la solution (1, 2, 3) convient pour la valeur 6 alors la solution (2, 3, 1) ne peut plus convenir (les d�s sont interchangeables).
Aide: renvoyer plusieurs valeurs consiste � cr�er un tableau et � le remplir durant la recherche puis au final retourner le tableau.
Auteurs : Alexandre Astier
Objectif : manipuler des listes
Niveau de difficult� : facile
Exercice
Soit deux listes n1 et n2 permettant de coder deux entiers naturels.
Par exemple :
- n1 = [9, 4, 0] pour coder le nombre 940 ;
- n2 = [8, 3] pour coder le nombre 83(*).
(*) On s'interdit les nombres commen�ant par 0 (� l'exception du chiffre 0).
Ainsi, le nombre 83 sera cod� [8, 3], et non [0, 8, 3].
Le but est de faire la somme n1+n2 et de retourner le r�sultat dans le m�me format de liste, soit :
somme = [1, 0, 2, 3] car 940 + 83 = 1023
Code python : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | >>> somme_2nombres([9, 4, 0], [8, 3]) >>> [1, 0, 2, 3] >>> somme_2nombres([1, 9, 3], [7])) >>> [2, 0, 0] >>> somme_2nombres([1, 2, 3], [0]) >>> [1, 2, 3] >>> somme_2nombres([0], [0]) >>> [0] |
Note : dans cet exercice, on �vitera de passer par des manipulations de cha�nes de caract�res.
Objectif : manipuler des listes, concevoir des algorithmes de recherche
Niveau de difficult� : facile
Exercice
Soit une liste d'entiers, il s'agit d'�crire une fonction qui renvoie les couples des indices d'�l�ments de la liste, de telle sorte que la somme de ces deux �l�ments est �gale � la valeur cible choisie.
Par exemple :
Code python : | S�lectionner tout |
1 2 | >>> somme_2([-2, -1, 2, 1], cible = 0) >>> [(0, 2), (1, 3)] |
De m�me pour le couple (1, 3) o� les �l�ments correspondants aux indices 1 et 3, �-�-d respectivement -1 et 1, donnent aussi la valeur cible lorsqu'on les additionne (-1 + 1 = 0).
1. Si la cible ne peut �tre atteinte avec les entr�es, la fonction renvoie une liste vide : []
2. Les indices renvoy�s dans un couple doivent �tre diff�rents : (i, j) tels que i ≠ j.
3. Pour un couple d'indices donn�, vous pouvez renvoyer indiff�remment (i, j) ou (j, i), mais pas les deux.
4. De m�me, l'ordre des couples dans la liste est aussi indiff�rent.
Code python : | S�lectionner tout |
1 2 3 4 5 | >>> somme_2([2, 9, 5, 3, -1], cible = 6) >>> [] >>> somme_2([-2, -2, -1, -1, 1, 2, 2], cible = 0) >>> [(0, 5), (0, 6), (1, 5), (1, 6), (2, 4), (3, 4)]) |
Objectif : manipuler des listes, concevoir des algorithmes de recherche
Niveau de difficult� : interm�diaire
Exercice
Voici un sch�ma de la pyramide en question :
Code : | S�lectionner tout |
1 2 3 4 | 1 2 3 6 4 5 8 1 2 9 |
Du sommet (1), vous pouvez vous rendre sur (2) ou sur (3) juste en dessous. Si vous �tes descendu sur (2), vous pouvez poursuivre sur (6) ou sur (4). Mais si vous aviez choisi plut�t de descendre sur (3), vous pouvez poursuivre sur (4) ou sur (5), etc.
Si on mod�lise la pyramide dans une liste de listes :
Code python : | S�lectionner tout |
pyramide = [ [1], [2,3], [6,4,5], [8,1,2,9] ]
Et si vous �tes situ� � la position pyramide[i][j], vous pouvez donc vous d�placer soit sur pyramide[i+1, j], soit sur pyramide[i+1, j+1].
Le chemin vers la sortie en bas de la pyramide est celui qui minimisera la somme des nombres que vous rencontrerez au passage.
Par exemple, ici le chemin sera (nombres soulign�s):
Code : | S�lectionner tout |
1 2 3 4 | 1 2 3 6 4 5 8 1 2 9 |
Vous devez �crire une fonction meilleur_chemin() qui renvoie cette somme :
Code python : | S�lectionner tout |
1 2 3 | >>> pyramide = [ [1], [2,3], [6,4,5], [8,1,2,9] ] >>> meilleur_chemin(pyramide) >>> 8 |
Code python : | S�lectionner tout |
1 2 3 | >>> pyramide = [ [1], [2, 3], [6, 4, 5], [8, 1, 2, 9], [7, 0, 2, 1, 3] ] >>> meilleur_chemin(pyramide) >>> 8 |
Code python : | S�lectionner tout |
1 2 3 | >>> pyramide = [ [42] ] >>> meilleur_chemin(pyramide) >>> 42 |
Code python : | S�lectionner tout |
1 2 3 | >>> pyramide = [ [1], [5, 4], [1, 4, 3], [3, 4, 2, 1], [1, 2, 5, 5, 5] ] >>> meilleur_chemin(pyramide) >>> 11 |
Objectif : manipuler des listes, concevoir des algorithmes
Niveau de difficult� : interm�diaire
Exercice
Dans cet exercice, un tableau sieges de dimension n repr�sente une rang�e de n si�ges.
Si sieges[i]=1, le si�ge � l'emplacement i (0 ≤ i ≤ n-1) est occup� par une personne.
Si sieges[i]=0, le si�ge � l'emplacement i est libre.
Ex. : sieges = [0, 1, 0, 0, 1, 0, 0, 0, 1].
Dans la rang�e, au moins une place de si�ge doit �tre libre, et au moins un si�ge est occup� par une personne.
Dans le respect de la distanciation physique, il faut trouver un si�ge libre qui maximise la distance avec le plus proche voisin.
Code text : | S�lectionner tout |
1 2 3 4 5 | i=6 | sieges = [0, 1, 0, 0, 1, 0, 0, 0, 1] |<--->|<--->| 2 2 |
Ici, sieges[6]=0 est l'emplacement libre qui maximise la distance, car le plus proche voisin est � une distance �gale � 2.
Tous les autres emplacements libres donneraient au moins un voisin � une distance inf�rieure � 2.
Code python : | S�lectionner tout |
1 2 3 | >>> sieges = [0, 1, 0, 0, 1, 0, 0, 0, 1] >>> max_distance(sieges) >>> 2 |
Code python : | S�lectionner tout |
1 2 3 | >>> sieges = [0, 0, 0, 1] >>> max_distance(sieges) >>> 3 |
�crire la fonction max_distance() qui prend une rang�e de si�ges occup�s ou libres en param�tre, et qui renvoie pour un emplacement libre la plus grande distance avec le voisin le plus proche.
Les sources pr�sent�es sur cette page sont libres de droits et vous pouvez les utiliser � votre convenance. Par contre, la page de pr�sentation constitue une �uvre intellectuelle prot�g�e par les droits d'auteur. Copyright � 2025 Developpez Developpez LLC. Tous droits r�serv�s Developpez LLC. Aucune reproduction, m�me partielle, ne peut �tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'� trois ans de prison et jusqu'� 300 000 € de dommages et int�r�ts.