Uitdaging: Recursieve Bestandszoekopdracht
Werken met geneste woordenboeken
In Python kunnen woordenboeken andere woordenboeken bevatten. Dit is handig voor het weergeven van hiërarchische structuren zoals een bestandssysteem.
In dit geval:
- Sleutels zijn namen (van bestanden of mappen);
- Als de waarde de string
"file"
is, betekent dit dat het een bestand is; - Als de waarde een ander woordenboek is, betekent dit dat het een map is.
Gebruik items()
om door alle sleutel-waardeparen te itereren:
123456789101112file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
- Gebruik
isinstance(content, dict)
om te controleren of een waarde zelf een woordenboek is (d.w.z. een map, geen bestand):
123456789101112file_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")
Swipe to start coding
Stel je voor dat je moet controleren of een specifiek bestand bestaat binnen een geneste woordenboekstructuur die een bestandssysteem voorstelt. Implementeer een functie file_exists
die recursief navigeert door mappen (woordenboekobjecten) en zoekt naar een bestand (weergegeven door de string "file"
). Geef True
terug als het bestand is gevonden; anders geef je False
terug.
- Gebruik een
for
-lus om te itereren door alle elementen van hetfile_system
woordenboek met deitems()
-methode. Hiermee worden de sleutel (name
) en de waarde (content
) opgehaald. - Controleer of
content
een bestand is (d.w.z. de string"file"
) en ofname
overeenkomt mettarget
(de naam van het gezochte bestand). - Als beide voorwaarden zijn voldaan, geef dan
True
terug, wat aangeeft dat het bestand is gevonden. - Als content geen bestand is, controleer dan of het een map is.
Gebruik de functie
isinstance()
, waarbij jecontent
als eerste argument endict
als tweede meegeeft (dit controleert of het element een woordenboek is). - Als
content
een map is, roep danfile_exists
recursief aan met de benodigde parameters om verder te zoeken erin. - Als de recursieve aanroep
True
retourneert, is het bestand gevonden, dus geefTrue
terug. - Als er geen overeenkomsten zijn gevonden na het controleren van alle mappen en bestanden, geef dan
False
terug.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 4.35
Uitdaging: Recursieve Bestandszoekopdracht
Veeg om het menu te tonen
Werken met geneste woordenboeken
In Python kunnen woordenboeken andere woordenboeken bevatten. Dit is handig voor het weergeven van hiërarchische structuren zoals een bestandssysteem.
In dit geval:
- Sleutels zijn namen (van bestanden of mappen);
- Als de waarde de string
"file"
is, betekent dit dat het een bestand is; - Als de waarde een ander woordenboek is, betekent dit dat het een map is.
Gebruik items()
om door alle sleutel-waardeparen te itereren:
123456789101112file_system = { "home": { "resume.pdf": "file", "notes.txt": "file" }, "etc": { "config.yaml": "file" } } for name, content in file_system.items(): print(name, "->", content)
- Gebruik
isinstance(content, dict)
om te controleren of een waarde zelf een woordenboek is (d.w.z. een map, geen bestand):
123456789101112file_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")
Swipe to start coding
Stel je voor dat je moet controleren of een specifiek bestand bestaat binnen een geneste woordenboekstructuur die een bestandssysteem voorstelt. Implementeer een functie file_exists
die recursief navigeert door mappen (woordenboekobjecten) en zoekt naar een bestand (weergegeven door de string "file"
). Geef True
terug als het bestand is gevonden; anders geef je False
terug.
- Gebruik een
for
-lus om te itereren door alle elementen van hetfile_system
woordenboek met deitems()
-methode. Hiermee worden de sleutel (name
) en de waarde (content
) opgehaald. - Controleer of
content
een bestand is (d.w.z. de string"file"
) en ofname
overeenkomt mettarget
(de naam van het gezochte bestand). - Als beide voorwaarden zijn voldaan, geef dan
True
terug, wat aangeeft dat het bestand is gevonden. - Als content geen bestand is, controleer dan of het een map is.
Gebruik de functie
isinstance()
, waarbij jecontent
als eerste argument endict
als tweede meegeeft (dit controleert of het element een woordenboek is). - Als
content
een map is, roep danfile_exists
recursief aan met de benodigde parameters om verder te zoeken erin. - Als de recursieve aanroep
True
retourneert, is het bestand gevonden, dus geefTrue
terug. - Als er geen overeenkomsten zijn gevonden na het controleren van alle mappen en bestanden, geef dan
False
terug.
Oplossing
Bedankt voor je feedback!
single