<html>
<head>
<meta name="generator" content="Windows Mail 17.5.9600.20315">
<style><!--
.EmailQuote {
margin-left:1pt;
padding-left:4pt;
border-left:#800000 2px solid;
}
--></style><style data-externalstyle="true"><!--
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph {
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
}
p.MsoNormal, li.MsoNormal, div.MsoNormal {
margin:0in;
margin-bottom:.0001pt;
}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst, 
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle, 
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast {
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
line-height:115%;
}
--></style></head>
<body dir="ltr">
<div data-externalstyle="false" dir="ltr" style="font-family: 'Calibri', 'Segoe UI', 'Meiryo', 'Microsoft YaHei UI', 'Microsoft JhengHei UI', 'Malgun Gothic', 'sans-serif';font-size:12pt;"><div>Grazie delle dritte, ho provveduto creare una situazione simile così è più semplice da passare.</div><div><br></div><div>Non posso usare python 2.7 perché devo usare per forza la versione 2. Questa classe è un esercitazione per l’università. Prima che mi diate del “bimbo-minchia” che non ha voglia di studiare volevo dirvi solo che ho più di 40 anni, sono padre di famiglia e mi alzo alle 6.00 di mattina per andare al lavoro, quindi ho un po di tempo per programmare solo la sera. Se potessi andare a lezione bastava far vedere il codice al prof che ti spiegava l’errore e ti diceva come intervenire, purtroppo però i corsi sono di mattina. Devo consegnare questa roba per il 10/12 e spero di finire perché vorreri avere un po di tempo per affinare il codice. Oltretutto provengo da .net e programmo per passione perché faccio un lavoro che con l’informatica non c’entra nulla.  </div><div><br></div><div>Ora che vi ho tediato con le mie vicissitudini personali riprendiamo il filo del discorso, quando  lancio lo script ottengo un errore di tipo AttributeError: 'NoneType' object has no attribute 'nomeNodo', quindi il nodo padre non viene inizializzato.</div><div><br></div><div>il sorgente è questo:<br></div><div data-signatureblock="true"><div><br></div><div>import math</div><div><br></div><div>class WNode(object):<br>    def __init__(self,w):<br>        self.nomeNodo = w<br>        self.sottoNodi = []<br>        self.nodoGenitore=None<br>    def __str__(self):<br>        return self.nomeNodo <br>    def __repr__(self):<br>        return 'WNode("'+self.nomeNodo+'")'<br>   <br>    #ritorna il numero di nodi dell'albero.<br>    def count(self):<br>        ret = 1<br>        for node in self.sottoNodi:<br>            ret += node.count()<br>        return ret</div><div><br></div><div>    def path(self,w):<br>        ret = []<br>        prec=""<br>        self._path(self,w)<br>        return ret</div><div><br></div><div>    def _path(self,root,w):<br>        for node in root.sottoNodi:<br>            if(node.nomeNodo==w):<br>                print "Trovato "+node.nomeNodo<br>                print node.sottoNodi<br>                print "        "+node.nodoGenitore.nomeNodo<br>                break<br>            else:<br>                self._path(node,w)<br>        <br>#Lista per dizionario parole nel file<br>Righe=['posta','sposta','esposta','sposata','spossata','spostata',<br>'spostai','spostati','spostarti','spostasti','spostavi',<br>'spostarvi','posata','posita']<br>    <br>def gen_wtree(wfile, word):<br>    return _generaAlbero(word)</div><div><br></div><div>#Genera l'albero di parole   <br>def _generaAlbero(word):<br>    root = WNode(word)<br>    listaNodi=_generaListaParole(word,root)<br>    for name in listaNodi:<br>        root.sottoNodi += [_generaAlbero(name.nomeNodo)]<br>    return root</div><div><br></div><div>#Genera lista parole lecite<br>def _generaListaParole(word,level):</div><div><br></div><div>    ret=[]<br>    nomiNodi=[]</div><div><br></div><div>    alfabeto='abcdefghijklmnopqrstuvwxyz'</div><div><br></div><div>    for j in range(0,len(word)+1):<br>        for i in range(0,len(alfabeto)):<br>            generata = word[0:j]+alfabeto[i] + word[j:]<br>            if _BinarySearch(generata)==True:<br>                inLista=generata in nomiNodi<br>                if inLista==False:<br>                    nomiNodi.append(generata)<br>                    tmpNode = WNode(generata)<br>                    tmpNode.nodoGenitore=level<br>                    print tmpNode.nodoGenitore.nomeNodo<br>                    ret.append(tmpNode)</div><div><br></div><div>    return ret</div><div><br></div><div>#Ricerca parole nel file dizionario<br>def _BinarySearch(word):<br>    return word in Righe</div><div><br></div><div>ret=gen_wtree("","posta")<br>print ret.count()<br>ret.path("spostata")</div><div><br></div><div>La funzione _BinarySearch è farlocca in quanto in realtà faccio una ricerca binaria su una lista di circa 270.000 parole, l’ho sostituita perché preleva tali parole da un file esterno. Tale file viene utilizzato per riempire la lista Righe=[] che qui ho inizializzato nel codice con le sole parole che servono all’esempio. La classe contiene molte altre funzioni che ho eliminato per compattare il codice da mettere qui</div><div><br></div><div>Luca</div><div><br></div></div><div style="padding-top: 5px; border-top-color: rgb(229, 229, 229); border-top-width: 1px; border-top-style: solid;"><div><font face=" 'Calibri', 'Segoe UI', 'Meiryo', 'Microsoft YaHei UI', 'Microsoft JhengHei UI', 'Malgun Gothic', 'sans-serif'" style='line-height: 15pt; letter-spacing: 0.02em; font-family: "Calibri", "Segoe UI", "Meiryo", "Microsoft YaHei UI", "Microsoft JhengHei UI", "Malgun Gothic", "sans-serif"; font-size: 12pt;'><b>Da:</b> <a href="mailto:berdario@gmail.com" target="_parent">Dario Bertini</a><br><b>Data invio:</b> ‎venerdì‎ ‎6‎ ‎dicembre‎ ‎2013 ‎19‎:‎16<br><b>A:</b> <a href="mailto:python@lists.python.it" target="_parent">Mailing List Python</a></font></div></div><div><br></div><div dir="">
<div class="PlainText">1- why not Python3?<br>
2- Ottieni un AttributeError (non puoi accedere a nomeNodo perchè<br>
nodoGenitor è None) o un TypeError (non puoi concatenare str e None:<br>
nodoGenitore.nomeNodo è None)?<br>
2b- in futuro ricordati di copiare il messaggio d'errore che hai: così<br>
facendo è più facile capire cosa vada effettivamente storto<br>
3- incolla il codice completo o, meglio ancora, usa qualcosa come<br>
<a href="http://ideone.com/" target="_parent">http://ideone.com/</a> in modo che possiamo riprodurre il problema<br>
facilmente<br>
3b- se il codice è troppo lungo per essere incollato tutto ed essere<br>
comprensibile, è sintomo che dovresti semplificarlo... inizia creando<br>
un caso di test ridotto, magari è possibile che nel processo tu stesso<br>
capisca dove si trova il problema<br>
<br>
(non penso che l'errore sia nel nomeNodo, ma effettivamente nel<br>
genitore che è None, ma così sui 2 piedi non so dove sia<br>
effettivamente il problema)<br>
<br>
<br>
-- <br>
xmpp: berdario@gmail.com<br>
bitmessage: BM-2cTYXfGiSTsnx3righ6aHcJSWe4MV17jDP<br>
gpg fingerprint: 3F8D53518012716C4EEF7DF67B498306B3BF75A0 (used just<br>
for signing commits)<br>
_______________________________________________<br>
Python mailing list<br>
Python@lists.python.it<br>
<a href="http://lists.python.it/mailman/listinfo/python" target="_parent">http://lists.python.it/mailman/listinfo/python</a><br>
</div>


</div></div>
</body>
</html>