Rinomina di un File in PyTown
Nel mondo virtuale di PyTown, ogni documento o file digitale è memorizzato in directory e sottodirectory rappresentate come dizionari annidati. Il sindaco della città, il signor CeePy, ha la grande responsabilità di mantenere tutti questi documenti organizzati, correttamente nominati e facilmente accessibili. Un giorno, il signor CeePy si accorse che un file molto importante era stato nominato in modo errato e doveva correggerlo con urgenza.
Il tuo compito è aiutare il signor CeePy scrivendo un programma Python ricorsivo per cercare questo file specifico nella struttura di directory rappresentata dal dizionario annidato e rinominarlo se viene trovato. In questo contesto, le chiavi rappresentano i nomi delle cartelle o dei file, e i valori sono o dizionari che rappresentano le sottocartelle o stringhe che rappresentano le estensioni dei file.
La prima linea dell'input è la struttura del dizionario annidato. Questo dizionario rappresenta le directory come chiavi e come valori o un dizionario o una stringa. Le stringhe sono estensioni di file che, quando combinate con le loro chiavi (nomi di file), formano il nome completo del file.
La seconda linea dell'input è il nome del file esistente (con la sua estensione) che deve essere trovato e rinominato.
La terza linea dell'input è il nuovo nome a cui il file esistente deve essere rinominato.
Il programma dovrebbe restituire la struttura del dizionario annidato modificata con il file rinominato. Se il file non viene trovato nella struttura delle directory, il programma dovrebbe stampare
File not found
.Input | Output |
{"home": {"documents": {"report": ".docx", "data": ".csv", "analysis": ".txt"}, "pictures": {"beach": ".jpg", "portrait": ".png"}}, "desktop": {"important": ".pdf", "todo": ".txt"}}
important.pdf
urgent.pdf | {"home": {"documents": {"report": ".docx", "data": ".csv", "analysis": ".txt"}, "pictures": {"beach": ".jpg", "portrait": ".png"}}, "desktop": {"urgent": ".pdf", "todo": ".txt"}} |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB