0% ont trouvé ce document utile (0 vote)
28 vues8 pages

Exercices Python Intermédiaires

Transféré par

toolsbot32
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
28 vues8 pages

Exercices Python Intermédiaires

Transféré par

toolsbot32
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 8

Exercices Python intermédiaires

j'aimerais que tu me donne 5 robustres exercices niveau intermediaire en python qui m'aidera
a avoir et obtenu des new skills utile et grisant en python

Voici 5 exercices intermédiaires qui te permettront de développer des compétences robustes et


utiles en Python tout en découvrant des concepts intéressants :

1. Créer un serveur HTTP simple avec `socket`

Objectif : Apprendre les bases du réseau avec Python en construisant un serveur HTTP capable de
répondre à des requêtes GET.
Crée un serveur qui écoute sur un port spécifique.
Lorsqu'une requête est reçue, retourne une réponse HTTP simple (par exemple, une page
HTML ou un JSON).
Bonus : Ajoute des réponses conditionnelles en fonction de l'URL demandée.
Compétence clé : Programmation réseau avec `socket`, compréhension des requêtes/réponses
HTTP.

2. Gestionnaire de tâches asynchrone avec `asyncio`

Objectif : Apprendre à travailler avec l'asynchronisme en Python.


Écris un programme qui gère plusieurs tâches asynchrones, comme :
Télécharger des fichiers fictifs simulés avec des `await asyncio.sleep(...)`.
Simuler des tâches comme des calculs ou des appels d'API.
Implémente un mécanisme de journalisation (logging) pour suivre les débuts et fins des
tâches.
Compétence clé : Maîtrise de `asyncio`, gestion des tâches concurrentes.

3. Scraper web avec `BeautifulSoup` et `requests`

Objectif : Extraire des données d'un site web public (comme des titres d'articles ou des prix de
produits).
Télécharge la page web et analyse son contenu HTML.
Identifie et extrait des données spécifiques (par exemple, le titre de tous les articles).
Sauvegarde les données dans un fichier JSON ou CSV.
Bonus : Implémente une fonction pour détecter et suivre les erreurs d'extraction.
Compétence clé : Web scraping, manipulation des données.

4. Simulateur de base de données avec threading

Objectif : Utiliser le multithreading pour simuler une base de données simple en mémoire.
Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 1/8
Crée un programme qui permet :
D'insérer, supprimer et lire des données dans une structure comme un dictionnaire ou
une liste.
De gérer plusieurs threads effectuant des opérations simultanées.
Implémente des verrous (`threading.Lock`) pour éviter les conditions de course.
Compétence clé : Programmation multithreadée, gestion des accès concurrents.

5. Jeu de simulation de robot avec classes et design patterns

Objectif : Concevoir un système orienté objet pour contrôler plusieurs robots.


Crée une classe `Robot` avec des attributs comme sa position et son énergie.
Implémente des méthodes pour que les robots se déplacent et interagissent.
Ajoute un gestionnaire (`Controller`) qui supervise les robots.
Bonus : Utilise un design pattern (par exemple, `Observer` pour surveiller les changements
d'état).
Compétence clé : Programmation orientée objet, design patterns, simulation.

Si tu travailles sur ces exercices et as des questions ou des blocages, je suis là pour t'aider ! 😊

non ce n'es pas se que je veux

Merci pour ton retour ! Pour m'assurer de te proposer exactement ce que tu veux, pourrais-tu
préciser :
1. Quel est ton objectif principal ? Par exemple, apprendre des concepts spécifiques comme
l'asynchronisme, l'optimisation de performances, ou encore la manipulation de données
avancée.
2. Quel type de projet ou exercice te motive ? Plutôt des défis algorithmiques, des projets
pratiques, ou des problèmes complexes ?
3. Un domaine particulier ? (Ex. : sécurité, web, automatisation, intelligence artificielle, etc.)
Avec ces détails, je pourrais ajuster et te proposer des exercices qui correspondent parfaitement à
tes attentes.😊

des defis d'algorithme , des problemes complexes et de logiques

Voici 5 défis algorithmiques et logiques intermédiaires qui devraient te permettre de tester et


d'améliorer tes compétences en Python :

1. Problème du voyageur de commerce (Travelling Salesman Problem)

Objectif : Résoudre le problème du voyageur de commerce (TSP) pour un ensemble de villes, en


utilisant une approche de programmation dynamique ou de recherche de solutions approchées.
Tu as un ensemble de villes avec des distances entre chaque paire.

Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 2/8
L'objectif est de trouver le chemin le plus court qui passe par toutes les villes une seule fois et
revient à la ville de départ.
Bonus : Implémente une heuristique (comme la méthode de recherche locale) pour obtenir
une solution approximative.
Compétence clé : Algorithmes de graphes, programmation dynamique, recherche de solutions
optimisées.

2. Génération de permutations et combinaisons

Objectif : Générer toutes les permutations ou combinaisons possibles d’un ensemble donné.
Implémente une fonction qui génère toutes les permutations possibles d'une liste ou d'un
ensemble de n éléments.
En utilisant ces permutations, résous un problème comme "trouver un sous-ensemble qui a la
somme la plus proche d'une valeur cible".
Bonus : Implémente un générateur d'itérations paresseuses avec `yield` pour des
ensembles très grands.
Compétence clé : Algorithmes de combinaison et permutation, optimisation mémoire avec
`yield`.

3. Problème des N-reines

Objectif : Résoudre le problème classique des N-reines, où il faut placer N reines sur un échiquier
de taille N x N de manière à ce qu'aucune reine ne soit en position d'attaque.
Implémente une fonction récursive pour placer les reines et vérifier les contraintes (les reines
ne peuvent pas se partager une ligne, une colonne ou une diagonale).
Bonus : Affiche toutes les solutions possibles pour un N donné.
Compétence clé : Récursion, algorithmes de backtracking.

4. Trouver le plus grand sous-tableau dont la somme est maximale (Kadane's


Algorithm)

Objectif : Implémenter l'algorithme de Kadane pour résoudre le problème du plus grand sous-
tableau dont la somme est maximale.
Donne un tableau d'entiers, trouve le sous-tableau contigu dont la somme est la plus élevée.
Bonus : Améliore cet algorithme en lui donnant une complexité de temps O(n).
Compétence clé : Algorithmes de recherche de sous-tableaux, optimisation de complexité.

5. Résoudre un problème de sudoku

Objectif : Résoudre un puzzle Sudoku en utilisant un algorithme de backtracking.


Implémente une fonction qui résout une grille de Sudoku donnée en remplissant les cases
vides.
Vérifie que chaque ligne, chaque colonne et chaque sous-grille 3x3 respecte les règles du
Sudoku.
Bonus : Ajoute un générateur de Sudoku avec une difficulté variable.
Compétence clé : Backtracking, résolution de contraintes.

Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 3/8
Ces défis couvrent des aspects cruciaux de l'algorithmie et de la logique, et te permettront de
travailler sur des problèmes complexes tout en perfectionnant ta maîtrise de Python. Si tu
souhaites de l'aide pour l'un de ces exercices, n'hésite pas à demander ! 😊

non de raisonnement logique et de la manipulation des types de données python

Merci pour la précision ! Voici des défis qui allient raisonnement logique et manipulation des types
de données en Python :

1. Anagrammes : Vérification si deux chaînes sont des anagrammes

Objectif : Vérifier si deux chaînes de caractères sont des anagrammes l'une de l'autre (c'est-à-dire
qu'elles contiennent les mêmes lettres, mais dans un ordre différent).
Implémente une fonction qui prend en entrée deux chaînes et renvoie `True` si elles sont des
anagrammes, et `False` sinon.
Astuce : Utilise des structures de données comme des dictionnaires ou des `Counter` de la
bibliothèque `collections`.
Compétence clé : Manipulation de chaînes de caractères, dictionnaires, `collections.Counter`.

2. Trouver les éléments uniques dans une liste

Objectif : Trouver les éléments qui apparaissent exactement une fois dans une liste.
Donne une liste d'entiers. Implémente une fonction qui renvoie une nouvelle liste ne
contenant que les éléments uniques (ceux qui apparaissent une seule fois).
Astuce : Utilise des structures de données comme des `set` ou des `dict` pour compter les
occurrences.
Compétence clé : Utilisation des `set` et des dictionnaires pour manipuler des listes.

3. Permutation circulaire

Objectif : Vérifier si une chaîne est une permutation circulaire d'une autre chaîne.
Une permutation circulaire d'une chaîne est une chaîne où les caractères ont été déplacés
d'un certain nombre de positions. Par exemple, "abc" est une permutation circulaire de "bca".
Implémente une fonction qui vérifie si une chaîne est une permutation circulaire d'une autre.
Astuce : Utilise la concaténation de la chaîne pour simplifier le problème (par exemple, "abc"
+ "abc" contient toutes les permutations circulaires de "abc").
Compétence clé : Manipulation de chaînes de caractères et raisonnement logique.

4. Vérification de parenthèses équilibrées

Objectif : Vérifier si les parenthèses dans une expression sont correctement équilibrées.
Donne une chaîne contenant des parenthèses `()`, des crochets `[]` et des accolades `{}`.
Implémente une fonction qui vérifie si chaque parenthèse a une paire correspondante et que
l'ordre est correct.

Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 4/8
Astuce : Utilise une pile (`list`) pour pousser les symboles ouvrants et les retirer lorsqu'un
symbole fermant correspondant est rencontré.
Compétence clé : Utilisation de piles (LIFO), gestion des parenthèses.

5. Trouver le nombre d'occurrences d'un sous-ensemble dans une liste

Objectif : Trouver le nombre d'occurrences exactes d'un sous-ensemble dans une liste.
Par exemple, si tu as une liste `[1, 2, 3, 1, 2, 3, 1, 2]` et que tu veux savoir combien de
fois la sous-liste `[1, 2]` apparaît, ton programme devrait renvoyer `3`.
Astuce : Utilise une approche avec des tranches de listes pour parcourir toutes les sous-listes
possibles.
Compétence clé : Manipulation de sous-listes et de tranches en Python.

6. Compression de chaînes avec comptage des caractères

Objectif : Implémenter une fonction qui compresse une chaîne de caractères en comptant les
répétitions de chaque caractère consécutif.
Par exemple, pour la chaîne `"aaabbbcc"`, la sortie doit être `"a3b3c2"`.
Astuce : Utilise une boucle pour parcourir la chaîne et compter les caractères consécutifs.
Compétence clé : Manipulation de chaînes de caractères, comptage d'occurrences.

Ces défis vont tester ton raisonnement logique tout en te permettant de manipuler des types de
données tels que les listes, les dictionnaires, les chaînes de caractères, et les ensembles. Ils sont
parfaits pour améliorer ta compréhension de la structure des données et de leur manipulation en
Python !

20 autres encores

Voici 20 autres défis de raisonnement logique et de manipulation de types de données en Python


pour pousser encore plus loin tes compétences :

1. Échanger deux éléments dans une liste

Objectif : Échanger les éléments d'une liste à des positions données.


Implémente une fonction qui échange deux éléments d'une liste en fonction de leurs indices.
Astuce : Utilise le déballage de variables pour simplifier l'échange.

2. Compter les occurrences d'un élément dans une liste

Objectif : Trouver combien de fois un élément apparaît dans une liste.


Implémente une fonction qui compte les occurrences d'un élément donné dans une liste.
Astuce : Utilise `list.count()` ou un dictionnaire pour une approche plus personnalisée.

3. Fusionner deux listes triées


Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 5/8
Objectif : Fusionner deux listes triées en une seule liste triée.
Implémente une fonction qui prend deux listes triées et les fusionne en une seule liste triée.
Astuce : Utilise deux indices pour parcourir les deux listes en parallèle.

4. Trouver la première valeur qui manque dans une liste

Objectif : Trouver le plus petit nombre entier positif qui manque dans une liste.
Par exemple, pour la liste `[3, 4, -1, 1]`, le résultat devrait être `2`.
Astuce : Trie la liste ou utilise un ensemble pour optimiser la recherche.

5. Calculer la somme des éléments d'une liste sans utiliser `sum()`

Objectif : Calculer la somme des éléments d'une liste sans utiliser la fonction `sum()`.
Implémente une fonction qui additionne les éléments d'une liste en utilisant une boucle.

6. Compter les paires d'éléments qui s'additionnent à une valeur cible

Objectif : Trouver combien de paires dans une liste s'additionnent à une valeur cible donnée.
Par exemple, pour la liste `[1, 2, 3, 4, 3]` et une cible `6`, il y a 2 paires (`(2, 4)` et `(3,
3)`).
Astuce : Utilise un dictionnaire pour stocker les éléments déjà vus.

7. Inverser une chaîne sans utiliser de méthodes intégrées

Objectif : Inverser une chaîne de caractères sans utiliser la méthode intégrée `[::-1]`.
Implémente une fonction qui retourne la chaîne inversée en utilisant une boucle.

8. Trouver les doublons dans une liste

Objectif : Trouver tous les éléments qui apparaissent plus d'une fois dans une liste.
Implémente une fonction qui retourne une liste des éléments en doublon.
Astuce : Utilise un dictionnaire ou un `set` pour identifier les doublons.

9. Créer une fonction qui détermine si une chaîne est un palindrome

Objectif : Vérifier si une chaîne de caractères est un palindrome.


Une chaîne est un palindrome si elle peut être lue de la même manière de gauche à droite et
de droite à gauche.
Astuce : Utilise les indices négatifs pour comparer les caractères.

10. Fusionner deux dictionnaires

Objectif : Fusionner deux dictionnaires en un seul.


Si deux dictionnaires ont des clés identiques, la valeur du second dictionnaire doit remplacer
celle du premier.

Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 6/8
Astuce : Utilise l'opérateur `**` ou la méthode `update()`.

11. Obtenir les éléments communs entre deux listes

Objectif : Trouver les éléments communs entre deux listes.


Implémente une fonction qui retourne une liste des éléments présents dans les deux listes.
Astuce : Utilise des ensembles (`set`) pour une recherche efficace.

12. Calculer la moyenne des nombres dans une liste

Objectif : Calculer la moyenne des nombres dans une liste sans utiliser de fonctions intégrées.
Implémente une fonction qui calcule la moyenne manuellement.

13. Vérification d'un triangle valide

Objectif : Vérifier si trois longueurs données peuvent former un triangle valide.


Un triangle est valide si la somme de n'importe quelles deux longueurs est supérieure à la
troisième longueur.
Astuce : Utilise des conditions pour vérifier les trois inégalités.

14. Supprimer les doublons d'une liste sans conserver l'ordre

Objectif : Supprimer tous les doublons d'une liste sans conserver l'ordre des éléments.
Implémente une fonction qui retourne une liste sans doublons.
Astuce : Utilise un ensemble pour éliminer les doublons.

15. Déterminer si un nombre est un nombre premier

Objectif : Vérifier si un nombre donné est un nombre premier.


Implémente une fonction qui vérifie si un nombre est premier (c'est-à-dire qu'il n'a que deux
diviseurs : 1 et lui-même).

16. Convertir une liste de tuples en un dictionnaire

Objectif : Convertir une liste de tuples en un dictionnaire.


Par exemple, la liste `[('a', 1), ('b', 2)]` doit devenir `{'a': 1, 'b': 2}`.
Astuce : Utilise la compréhension de dictionnaire.

17. Trouver les intersections de deux listes sans utiliser `set`

Objectif : Trouver les éléments communs entre deux listes sans utiliser de structures de données
comme `set`.
Implémente une fonction qui recherche les éléments communs à l'aide de boucles.

18. Calculer le produit des éléments d'une liste


Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 7/8
Objectif : Calculer le produit de tous les éléments dans une liste de nombres.
Implémente une fonction qui multiplie tous les éléments d'une liste sans utiliser de méthodes
intégrées.

19. Extraire les chiffres d'une chaîne de caractères

Objectif : Extraire tous les chiffres d'une chaîne de caractères.


Par exemple, pour la chaîne `"abc123xyz"`, ton programme devrait retourner `[1, 2, 3]`.
Astuce : Utilise une compréhension de liste pour extraire les chiffres.

20. Compter les voyelles dans une chaîne

Objectif : Compter le nombre de voyelles dans une chaîne de caractères.


Implémente une fonction qui retourne le nombre de voyelles (a, e, i, o, u) dans une chaîne
donnée.
Astuce : Utilise une boucle ou une compréhension de liste pour parcourir la chaîne.

Ces défis couvrent une large gamme de concepts allant de la manipulation de listes et de
dictionnaires à la gestion de chaînes et d'ensembles, en passant par des algorithmes classiques de
raisonnement logique. Chaque problème t'aidera à maîtriser des techniques utiles pour
l'optimisation, l'analyse et la gestion des données en Python !

Printed using Save ChatGPT as PDF, powered by PDFCrowd HTML to PDF API. 8/8

Vous aimerez peut-être aussi