Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Recherche de Fichiers Récursive | Fonctions de Récursion et Lambda
Tutoriel sur les Fonctions Python

bookDéfi : Recherche de Fichiers Récursive

Travail avec des dictionnaires imbriqués

En Python, les dictionnaires peuvent contenir d'autres dictionnaires. Ceci est utile pour représenter des structures hiérarchiques telles qu’un système de fichiers.

Dans ce cas :

  • Les clés sont des noms (de fichiers ou de dossiers) ;
  • Si la valeur est la chaîne "file", cela signifie qu’il s’agit d’un fichier ;
  • Si la valeur est un autre dictionnaire, cela signifie qu’il s’agit d’un dossier.

Utiliser items() pour itérer sur toutes les paires clé-valeur :

123456789101112
file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
copy
  • Utiliser isinstance(content, dict) pour vérifier si une valeur est elle-même un dictionnaire (c’est-à-dire un dossier, et non un fichier) :
123456789101112
file_system = { "home": { "resume.pdf": "file" }, "config.yaml": "file" } for name, content in file_system.items(): if isinstance(content, dict): print(name, "is a folder") else: print(name, "is a file")
copy
Tâche

Swipe to start coding

Imaginez devoir vérifier si un fichier existe dans une structure de dictionnaire imbriquée représentant un système de fichiers. Implémentez une fonction file_exists qui navigue récursivement à travers les dossiers (objets dictionnaires) et recherche un fichier (représenté par la chaîne de caractères "file"). Retournez True si le fichier est trouvé ; sinon, retournez False.

  1. Utilisez une boucle for pour itérer sur tous les éléments du dictionnaire file_system en utilisant la méthode items(). Cela permet de récupérer la clé (name) et la valeur (content).
  2. Vérifiez si content est un fichier (c'est-à-dire la chaîne de caractères "file") et si name correspond à target (le nom du fichier recherché).
  3. Si les deux conditions sont remplies, retournez True, indiquant que le fichier a été trouvé.
  4. Si content n'est pas un fichier, vérifiez s'il s'agit d'un dossier. Utilisez la fonction isinstance(), en passant content comme premier argument et dict comme second (ce qui vérifie si l'élément est un dictionnaire).
  5. Si content est un dossier, appelez récursivement file_exists avec les paramètres nécessaires pour continuer la recherche à l'intérieur.
  6. Si l'appel récursif retourne True, le fichier a été trouvé, donc retournez True.
  7. Si aucune correspondance n'est trouvée après avoir vérifié tous les dossiers et fichiers, retournez False.

Solution

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 2
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

close

Awesome!

Completion rate improved to 4.35

bookDéfi : Recherche de Fichiers Récursive

Glissez pour afficher le menu

Travail avec des dictionnaires imbriqués

En Python, les dictionnaires peuvent contenir d'autres dictionnaires. Ceci est utile pour représenter des structures hiérarchiques telles qu’un système de fichiers.

Dans ce cas :

  • Les clés sont des noms (de fichiers ou de dossiers) ;
  • Si la valeur est la chaîne "file", cela signifie qu’il s’agit d’un fichier ;
  • Si la valeur est un autre dictionnaire, cela signifie qu’il s’agit d’un dossier.

Utiliser items() pour itérer sur toutes les paires clé-valeur :

123456789101112
file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
copy
  • Utiliser isinstance(content, dict) pour vérifier si une valeur est elle-même un dictionnaire (c’est-à-dire un dossier, et non un fichier) :
123456789101112
file_system = { "home": { "resume.pdf": "file" }, "config.yaml": "file" } for name, content in file_system.items(): if isinstance(content, dict): print(name, "is a folder") else: print(name, "is a file")
copy
Tâche

Swipe to start coding

Imaginez devoir vérifier si un fichier existe dans une structure de dictionnaire imbriquée représentant un système de fichiers. Implémentez une fonction file_exists qui navigue récursivement à travers les dossiers (objets dictionnaires) et recherche un fichier (représenté par la chaîne de caractères "file"). Retournez True si le fichier est trouvé ; sinon, retournez False.

  1. Utilisez une boucle for pour itérer sur tous les éléments du dictionnaire file_system en utilisant la méthode items(). Cela permet de récupérer la clé (name) et la valeur (content).
  2. Vérifiez si content est un fichier (c'est-à-dire la chaîne de caractères "file") et si name correspond à target (le nom du fichier recherché).
  3. Si les deux conditions sont remplies, retournez True, indiquant que le fichier a été trouvé.
  4. Si content n'est pas un fichier, vérifiez s'il s'agit d'un dossier. Utilisez la fonction isinstance(), en passant content comme premier argument et dict comme second (ce qui vérifie si l'élément est un dictionnaire).
  5. Si content est un dossier, appelez récursivement file_exists avec les paramètres nécessaires pour continuer la recherche à l'intérieur.
  6. Si l'appel récursif retourne True, le fichier a été trouvé, donc retournez True.
  7. Si aucune correspondance n'est trouvée après avoir vérifié tous les dossiers et fichiers, retournez False.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

close

Awesome!

Completion rate improved to 4.35
Section 5. Chapitre 2
single

single

some-alt