🏋️ Exercices supplémentaires

Sur cette page se trouvent des exercices supplémentaires pour vous entraîner. Ils sont classés par niveau de difficulté :

  • Facile : 🍀
  • Moyen : ⚖️
  • Difficile : 🌶️

⚖️ Exercice 13 : Gestion de budget personnel avec des modules et formatage

Objectif : Créer un programme de gestion de budget personnel permettant de simuler les revenus et les dépenses mensuelles, de calculer le solde mensuel et d'afficher un résumé formaté des finances. Ce programme fera appel à des modules intégrés de Python et utilisera des techniques d'affichage avancé.

Modules Ă  utiliser :

  • math : pour arrondir les valeurs numĂ©riques.
  • random : pour gĂ©nĂ©rer alĂ©atoirement des revenus et des dĂ©penses.
  • datetime : pour afficher la date actuelle.
  • statistics (optionnel) : pour calculer des statistiques avancĂ©es (par exemple, la moyenne des dĂ©penses).

Consignes :

Créer et implémenter les fonctions suivantes :

  • generer_revenus() :
    • Retourne un revenu mensuel alĂ©atoire compris entre 2000€ et 5000€.
  • generer_depenses() :
    • Retourne une liste de dĂ©penses alĂ©atoires comprenant des catĂ©gories telles que le loyer, la nourriture, le transport et les loisirs. Chaque dĂ©pense doit avoir un montant alĂ©atoire compris entre 100€ et 1500€.
  • calculer_solde(revenus, depenses) :
    • Calcule le solde mensuel en soustrayant la somme totale des dĂ©penses du revenu.
  • afficher_resume_financier(revenus, depenses, solde) :
    • Affiche un rĂ©sumĂ© formatĂ©, incluant les dĂ©tails des revenus, des dĂ©penses et du solde mensuel.

Formatage de l'affichage :

  • Utilisez des f-strings pour afficher les montants financiers arrondis Ă  deux dĂ©cimales.
  • Alignez les rĂ©sultats de manière soignĂ©e pour crĂ©er un tableau clair.
  • Affichez le mois et l'annĂ©e actuels en utilisant datetime pour donner un contexte temporel.

Exemple de sortie attendue :

>> Rapport financier du mois de Novembre 2024
>> -----------------------------------------
>> Revenus totaux : 3,472.50 €
>> DĂ©penses :
>> - Loyer                : 1,200.00 €
>> - Nourriture           :   650.50 €
>> - Transport            :   300.75 €
>> - Loisirs              :   500.00 €
>> -----------------------------------------
>> Solde mensuel          :   821.25 € (Positif)

Conseils :

  • Utilisez random.uniform() pour gĂ©nĂ©rer des montants avec des valeurs dĂ©cimales.
  • Employez math.ceil(), math.floor() et round() pour tester diffĂ©rentes mĂ©thodes d'arrondi si nĂ©cessaire.
  • Organisez le code pour assurer une lisibilitĂ© optimale.

🌶️ Exercice 14 : Simulation de navigation robotique intelligente

Objectif : Dans cet exercice, vous allez créer un programme de simulation de navigation robotique. Le programme simulera un robot se déplaçant sur une grille 10x10, évitant des obstacles et atteignant un objectif fixé. Ce programme utilisera des concepts de base en intelligence artificielle, tels que la prise de décision et la navigation autonome.

Modules Ă  utiliser :

  • random : pour gĂ©nĂ©rer des positions alĂ©atoires d'obstacles et de l'objectif.
  • math : pour calculer la distance entre le robot et l'objectif.
  • datetime (optionnel) : pour mesurer le temps pris par le robot pour atteindre l'objectif.

Consignes :

Créer et implémenter les fonctions suivantes :

  • initialiser_grille() :
    • CrĂ©e et retourne une grille 10x10 remplie de caractères vides ".".
  • placer_obstacles(grille, nombre_obstacles) :
    • Place un nombre donnĂ© d'obstacles "#" de manière alĂ©atoire sur la grille sans chevaucher la position de dĂ©part du robot ni l'objectif.
  • placer_robot_et_objectif(grille) :
    • Place le robot "R" au coin supĂ©rieur gauche de la grille et l'objectif "X" Ă  une position alĂ©atoire de la grille.
  • afficher_grille(grille) :
    • Affiche la grille sous un format lisible pour suivre l'Ă©tat de la simulation.
  • calculer_distance(robot, objectif) :
    • Calcule la distance euclidienne entre la position du robot et l'objectif.
  • deplacer_robot(grille, robot, objectif) :
    • DĂ©place le robot vers l'objectif en prenant des dĂ©cisions intelligentes pour Ă©viter les obstacles et atteindre l'objectif.
    • Le robot doit Ă©valuer ses dĂ©placements possibles (haut, bas, gauche, droite) et choisir celui qui minimise la distance vers l'objectif sans entrer en collision avec un obstacle.

Conditions de déplacement du robot :

  • Le robot peut se dĂ©placer dans les quatre directions : haut, bas, gauche, droite.
  • Si le robot rencontre un obstacle, il doit recalculer sa trajectoire.
  • ImplĂ©mentez un système basique de prise de dĂ©cision pour choisir le meilleur mouvement possible Ă  chaque Ă©tape.

Étapes détaillées :

Étape 1 : Initialisation de la grille

  • ImplĂ©mentez initialiser_grille() pour crĂ©er une grille 10x10 vide.
  • ImplĂ©mentez placer_obstacles() pour ajouter des obstacles de manière alĂ©atoire sur la grille.
  • ImplĂ©mentez placer_robot_et_objectif() pour positionner le robot et l'objectif.

Étape 2 : Déplacement et logique du robot

  • ImplĂ©mentez calculer_distance() pour aider le robot Ă  choisir le mouvement le rapprochant de l'objectif.
  • ImplĂ©mentez deplacer_robot() pour gĂ©rer les dĂ©placements et les dĂ©cisions du robot.
  • IntĂ©grez un mĂ©canisme de vĂ©rification pour empĂŞcher le robot de sortir des limites de la grille ou de traverser des obstacles.

Étape 3 : Affichage et suivi de l'état

  • ImplĂ©mentez afficher_grille() pour afficher l'Ă©tat de la grille après chaque mouvement du robot.
  • Suivez les dĂ©placements du robot jusqu'Ă  ce qu'il atteigne l'objectif et affichez le nombre total de mouvements effectuĂ©s.

Exemple de sortie attendue :

>> Grille initiale :
>> R . . . . . . . . .
>> . . . # . . . . . .
>> . . . . . . # . . .
>> . . . . . . . . . .
>> . # . . . . . . . .
>> . . . . . . . . . X
>> . . # . . . . . . .
>> . . . . . . # . . .
>> . . . . . . . . . .
>> . . . . . # . . . .

>> DĂ©placement 1 : vers le bas
>> DĂ©placement 2 : vers la droite
>> ...
>> Objectif atteint en 23 mouvements.

Conseils :

  • Utilisez random.randint() pour choisir des positions alĂ©atoires sur la grille.
  • Pour le dĂ©placement intelligent, comparez la distance actuelle Ă  la distance rĂ©sultante de chaque mouvement possible.
  • ImplĂ©mentez un suivi de la position du robot et assurez-vous de marquer chaque position parcourue pour Ă©viter de repasser par le mĂŞme endroit.

Bonus :

  • Ajoutez un compteur de temps pour mesurer la durĂ©e totale de la simulation en utilisant datetime.
  • ImplĂ©mentez une stratĂ©gie de contournement plus sophistiquĂ©e en utilisant un algorithme de recherche de chemin simplifiĂ©.

🌶️ Exercice Sup. 15 : Le Vrai Jeu d'Echecs

Consigne : A partir du code de l'Exercice Sup. 12 du Chapitre 3, créez un jeu d'échecs complet.

Règles du Jeu d'Echecs : Vous pouvez trouver les règles du jeu d'échecs ici.