[Python] Aiuto esercizio python

enrico franchi enrico.franchi a gmail.com
Mar 24 Nov 2015 16:11:06 CET


2015-11-23 18:33 GMT+00:00 Gianluca Amato <gianlucaamato1993 a gmail.com>:

> Questo è il pezzo che non capisco.. "Un dizionario d rappresenta un albero
> se d ha due chiavi: 'name' con
> valore il nome di un nodo e 'children' con valore la lista (eventualmente
> vuota)
> dei nodi figli e quest'ultimi sono a loro volta dizionari dello stesso
> tipo. Si
> veda l'esempio qui sotto.
> Implementare inoltre la funzione create_tree(d) che preso un dizionario d
> che
> rappresenta un albero crea il corrispondente albero con nodi di tipo TNode
> e ne
> ritorna la radice. La funzione deve aggiungere i figli nello stesso ordine
> in cui
> sono elencati nelle liste delle chiavi 'children’.” Come lo costruisco
> l’albero? Grazie in anticipo
>
>
Questo stesso esercizio lo ha postato qualuno, forse tu stesso, sul forum
di Python-it.

Python (l'utente, non il linguaggio) ha risposto (e si applica anche in
questo caso):

Il dizionario non lo devi creare, ti viene dato. Devi scrivere una funzione
che prenda in ingresso un dizionario formato in quel modo e restituisca un
oggetto TNode (di cui presumibilmente dovrai scrivere la classe) che
rappresenta la radice. Ovviamente dovrà essere possibile attraversare
l'albero partendo dalla radice, quindi dovrai aggiungere tutti i figli
mentre attraversi il dizionario.

Nota: se non sai cosa significhi un termine, basta cercare. Ad oggi, Google
è ancora gratis. Ma poi anche un minimo di ragionamento: cross|posting,
cosa sarà mai?


Cosa non c'e' chiaro in tutto cio'? E' un esercizio *veramente* banale.
Basta fermarsi a riflettere.

1. sai creare una classe (immagino di si, se non te lo avrebbero dato)
2. sai creare un oggetto (come sopra)
3. sai creare una funzione (come sopra)
4. Se il dizionario di partenza contiene due campi, name & children...
secondo te, che faccia deve avere un oggetto che rappresenta la stessa
roba? Tipo... quali attributi ti aspetti che abbia?
5. Mettendo insieme 1, 2 e 4 vuole dire che puoi tirare fuori
un'implementazione iniziale di TNode (verosimilmente, sono 4 righe per la
cosa piu' semplice che funziona).
6. Questo e' l'esempio piu' semplice in assoluto di ricorsione. Devi solo
chiederti quale sia il caso base... ma pensa, e' talmente semplice in
questo caso che semplicemente se scrivi il codice nel modo piu' naturale
possibile il caso base viene automaticamente supportato.
7. Con 3 e 5 e 6 puoi scrivere la funzione (che sara' probabilmente lunga
tipo 4-5 righe).


-- 
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20151124/79be3fe9/attachment.html>


Maggiori informazioni sulla lista Python