Ciao Lucia,<br>&nbsp; non saprei dirti quali errori evitare, tuttavia potrei
provare a suggerirti un paio di costrutti che mi sono piaciuti
particolarmente, significativi per capire come python si differenzi da
altri linguaggi più classici. Non ho nessuna pretesa di completezza,
spero soltanto di solleticare la fantasia. :-)
<br><br>1) switch case<br>----------------------<br><br>def error():<br>&nbsp; print &quot;errore&quot;<br><br>def connect():<br>&nbsp; print &quot;connesso&quot;<br><br>def default():<br>&nbsp; print &quot;comando non riconosciuto&quot;
<br><br>cases={ &quot;CONNECT&quot;: connect, &quot;ERROR&quot;: error}&nbsp; #associo ad una stringa una funzione tramite dizionario<br>modemline=modem.readline()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<div id="mb_5">&nbsp;&nbsp;&nbsp; # leggo una ipotetica riga dal modem 
<br>newstate=cases.get(modemline,default)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # estraggo
dai casi possibili la giusta funzione da chiamare, nel caso in cui non
ci sia viene restituita una funzione di default<br>newstate()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # invoco la funzione
<br><br># se ti interessa questo approccio, dai un occhio alle funzioni anonime lambda, retaggio della programamzione funzionale: <a href="http://www.secnetix.de/%7Eolli/Python/lambda_functions.hawk" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://www.secnetix.de/~olli/Python/lambda_functions.hawk
</a>, ti permettono di passare una funzione creata al volo come
argomento di un'altra funzione, cosa che ti permette, per esempio, di
filtrare delle liste o mappare <br><br>2) list comprehension (arriva da Haskel)<br>----------------------
<br>d=range(100)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # creo una lista di numeri interi<br>pari=[
n for n in d if n%2==0 ]&nbsp; # creo una lista di elementi n per ogni
elemento n in d che abbia la caratteristica di essere pari<br><br># nota che pari è una lista nuova
<br># oppure, più difficile:<br><br><font color="#0000ff"><code>&gt;&gt;&gt;&nbsp;</code></font><code>noprimes&nbsp;=&nbsp;[j&nbsp;for&nbsp;i&nbsp;in&nbsp;range(2,&nbsp;8)&nbsp;for&nbsp;j&nbsp;in&nbsp;range(i*2,&nbsp;50,&nbsp;i)]</code><br>
<font color="#0000ff"><code>&gt;&gt;&gt;&nbsp;</code></font><code>primes&nbsp;=&nbsp;[x&nbsp;for&nbsp;x&nbsp;in&nbsp;range(2,&nbsp;50)&nbsp;if&nbsp;x&nbsp;not&nbsp;in&nbsp;noprimes]</code><br>
<font color="#0000ff"><code>&gt;&gt;&gt;&nbsp;</code></font><code>print&nbsp;primes</code><br>

<code>[2,&nbsp;3,&nbsp;5,&nbsp;7,&nbsp;11,&nbsp;13,&nbsp;17,&nbsp;19,&nbsp;23,&nbsp;29,&nbsp;31,&nbsp;37,&nbsp;41,&nbsp;43,&nbsp;47]<br><br>(preso da <a href="http://www.secnetix.de/%7Eolli/Python/list_comprehensions.hawk" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://www.secnetix.de/~olli/Python/list_comprehensions.hawk</a>)<br>
</code><br>3) meta programmazione spicciola:<br>(che poi meta programmazione forse non è :-)<br>trovi una buona introduzione qui: <a href="http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html
</a><br>-----------------------<br><br>class Punto:<br>&nbsp; def __init__(self,d):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # costruttore, accetta un parametro, se non è un dizionario la riga seguente da errore.<br>&nbsp;&nbsp;&nbsp; for key,value in d.items(): # per ogni chiave e valore del dizionario...
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setattr(self,key,value)&nbsp;&nbsp;&nbsp; # si associa all'oggetto un
attributo specificato dalla chiave del dizionario, associato al suo
valore<br><br>p=Punto({&quot;latitudine&quot;:0,&quot;longitudine&quot;:0})&nbsp; # si può inizializzare un oggetto con attributi variabili, comodo nelle serializzazioni
<br><br>p.latitudine,p.longitudine=gps.readline().split(&quot;,&quot;) <br><br>---------------------<br><br>Bon, mi fermo qui.<br>Ciao!<div><div class="ea"><span id="e_10de99896de67359_1">- Show quoted text -</span></div>
<span class="e" id="q_10de99896de67359_1"><br><br><br><div><span class="gmail_quote">On 9/25/06, <b class="gmail_sendername">lucia bozzo
</b> &lt;<a href="mailto:luciabozzo@yahoo.it" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">luciabozzo@yahoo.it</a>&gt; wrote:<br><br></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Io non sono nuova ai linguaggi di programmazione:<br>20 anni di cobol<br>4 anni&nbsp;&nbsp; di visual basic<br><br>ma sono nuova in Python<br><br>chi è più addentro di me in questo linguaggio, mi può consigliare quali errori evitare data la mia provenienza ?
<br><br>Grazie a tutti<br><span>Lucia<br></span><span><br></span></blockquote></div><br></span></div></div><br>-- <br>Fabrizio Zeno Cornelli