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 : 68 - Dernière mise à jour : 22 janvier 2022 

 

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

SommaireProblèmes complexes
Mis à jour le 6 novembre 2021 par Sve@r

Objectif : apprendre à coder un algorithme capable d'analyser une situation évolutive

Niveau de difficulté : intermédiaire

Exercice
Le jeu "plus petit/plus grand" est un des classiques dans l'apprentissage de la programmation. L'ordinateur génère un nombre aléatoire et le joueur essaye de le retrouver. À chaque étape, l'ordinateur indique si le nombre proposé est plus petit ou plus grand que le nombre à trouver.
Ici, l'exercice proposé est de programmer la position inverse : le joueur choisit un nombre et l'ordinateur essaye de le retrouver selon la même approche.

La vraie difficulté de l'exercice sera que le programme doit détecter la tricherie (celle du joueur, car le programme, lui, ne triche jamais). Ce cas se produit quand l'ordinateur propose (par exemple) 50 et que le joueur répond "+". Puis plus tard, il propose 51 et le joueur répond "-". Et bien entendu, une situation symétrique si l'ordinateur propose (toujours) 50 et que le joueur répond "-". Puis plus tard, il propose 49 et le joueur répond "+".

Exemple de résultat honnête

Code : Sélectionner tout
1
2
3
4
5
6
7
Mémorisez un nombre entre 1 et 100, je vais essayer de le retrouver
Appuyez sur <enter> quand vous serez prêt. Et ne trichez pas ensuite...
Je propose 57... +, - ou G ?-
Je propose 37... +, - ou G ?-
Je propose 19... +, - ou G ?+
Je propose 25... +, - ou G ?G
J'ai trouvé 25 en 4 coups !!!
Exemple de tricherie
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
Mémorisez un nombre entre 1 et 100, je vais essayer de le retrouver
Appuyez sur <enter> quand vous serez prêt. Et ne trichez pas ensuite...
Je propose 44... +, - ou G ?-
Je propose 29... +, - ou G ?-
Je propose 17... +, - ou G ?+
Je propose 25... +, - ou G ?+
Je propose 27... +, - ou G ?-
Je propose 26... +, - ou G ?-
Tricheur !!! A la réponse 4 il avait été proposé 25 et répondu "+" - En proposant 26 la réponse ne peut pas être "-" !!!
J'ai gagné par forfait en 6 coups !!!

Voir une solution
Mis à jour le 27 décembre 2021 par f-leb, Pyramidev

Objectif : apprendre à coder un algorithme

Niveau de difficulté : intermédiaire

Exercice

Un robot est disposé sur une grille de taille supposée infinie dont les cases sont repérées par ses coordonnées (x, y).
Initialement, il est situé à l'origine (0, 0) et tourné vers le nord (vers les y croissant).

Les commandes de déplacement du robot sont :

  • 'g' : rotation de 90° à gauche (si le robot est initialement orienté vers le nord, il sera orienté vers l'ouest) ;
  • 'd' : rotation de 90° à droite (si le robot est initialement orienté vers le nord, il sera orienté vers l'est) ;
  • entier de 1 à 9 : l'avancée du robot en nombre de cases selon sa direction en cours.

Les commandes seront passées dans une liste, par exemple :
Code python : Sélectionner tout
commandes = [4, 'd', 3]
Le robot avance de 4 cases vers le nord, tourne de 90° vers la droite, puis avance à nouveau de 3 cases vers l'est.

Pour compliquer l'exercice, des obstacles peuvent être disposés sur la grille. Les coordonnées des obstacles seront passées dans une liste, par exemple :
Code python : Sélectionner tout
obstacles = [(3, 2), (5, 1)]
Ici, deux obstacles sont placés aux coordonnées (3, 2) et (5, 1).

Si un obstacle se trouve sur la trajectoire du robot, ce dernier ne peut évidemment pas le traverser.
Le robot devra être bloqué sur la case qui précède l'obstacle, et passer à l'exécution de la commande suivante.

Écrire une fonction robot_simulation(commandes, obstacles) qui prend en paramètres une liste des commandes à exécuter et une liste de coordonnées d'obstacles (liste vide si pas d'obstacles). Pendant tout son parcours, le robot va plus ou moins s'éloigner de sa position de départ (0, 0). La fonction devra renvoyer la distance maximale élevée au carré (distance euclidienne) de la case la plus éloignée du point de départ atteinte par le robot.

Code python : Sélectionner tout
1
2
>>> robot_simulation(commandes = [7, 'd', 'd', 4], obstacles = [(0, 5)]) 
>>> 16
Car le robot ne se déplace que de 4 cases vers le nord avant d'être bloqué par un obstacle, puis de 4 cases après avoir fait demi-tour.
Le robot est donc revenu à sa position initiale, mais au cours de son trajet il a atteint la case (0, 4) juste avant de faire demi-tour et qui se trouve être la case la plus éloignée de l'origine (0,0), soit le carré de la distance égal à 16 (02 + 42).

Autres exemples :
Code python : Sélectionner tout
1
2
3
4
5
>>> robot_simulation(commandes = [4, 'd', 4, 'g', 1, 'd', 2, 'd', 3, 'd', 1], obstacles = [(0, 4), (3, 3)]) 
>>> 32 
  
>>> robot_simulation(commandes = ['g', 4, 'd', 3, 'g', 1, 'd', 'd', 5], obstacles = [(-4, 2)]) 
>>> 26

Voir une 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 © 2024 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.