IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)

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

SommaireFonctions originales
Mis � jour le 16 octobre 2021 par f-leb, Laethy

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

Voir une solution
Mis � jour le 12 octobre 2021 par Laethy, Sve@r

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

Voir une solution
Mis � jour le 16 octobre 2021 par Laethy, MPython Alaplancha

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

Voir une solution
Mis � jour le 8 juin 2021 par Laethy, MPython Alaplancha

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 :

Pour x marches de y cm, il parcourt z.zz m par semaine.

On n'oubliera pas :

  • 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

Voir une solution
Mis � jour le 16 octobre 2021 par f-leb, Laethy

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

Voir une solution
Mis � jour le 6 novembre 2021 par Sve@r

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)...

Voir une solution
Mis � jour le 7 novembre 2021 par MPython Alaplancha

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}

Voir une solutionVoir une autre solutionVoir une autre solution
Mis � jour le 7 novembre 2021 par Sve@r

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

Voir une solutionVoir une autre solutionVoir une autre solution
Mis � jour le 30 novembre 2021 par f-leb, Pyramidev, Sve@r

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.

Voir une solutionVoir une autre solutionVoir une autre solution
Mis � jour le 8 d�cembre 2021 par f-leb, Pyramidev

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)]
car les deux nombres aux indices 0 et 2, c-�-d respectivement -2 et 2, donnent la valeur cible = 0 si on les additionne (-2 + 2 = 0).
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)])

Voir une solutionVoir une autre solution
Mis � jour le 12 d�cembre 2021 par f-leb, Pyramidev, Sve@r

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
En partant du sommet de la pyramide (1), vous pouvez � chaque �tape descendre d'un �tage sur un nombre adjacent.
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
car 1 + 2 + 4 + 1 = 8 est le chemin qui minimise la somme des nombres rencontr�s parmi tous les chemins possibles entre le sommet et la base de la pyramide.

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

Voir une solutionVoir une autre solution
Mis � jour le 24 d�cembre 2021 par f-leb, Pyramidev

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
Autre exemple,
Code python : S�lectionner tout
1
2
3
>>> sieges = [0, 0, 0, 1] 
>>> max_distance(sieges) 
>>> 3
Pour respecter la distanciation physique, il faut se placer sur le premier si�ge libre � gauche, o� le plus proche voisin est alors � trois emplacements.

�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.

Voir une solutionVoir une autre solutionVoir une autre solution

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.