[PIPython] problema mappa
Valentino Volonghi aka Dialtone
dialtone
Mer 25 Maggio 2005 13:19:02 CEST
Andrea Giammarchi wrote:
> esempio uscita da for o while
> for( i = 0; i < 1000; i++) {
> if( condizione ) {
> i = 1000; // esce dal for
> }
> }
Questo non e` per nulla pulito. Ma per nulla. E` un'alterazione
inaspettata di
un valore per nessuna buona ragione a mio modo di vedere. Tra l'altro mi
piacerebbe
controllare se il valore di i e` specificato in ANSI C dopo la fine del
ciclo. Se lo fosse
questo e` un modo inaccettabile in modo assoluto.
> while( condizione ) {
> if( sotto_condizione ) {
> condizione = false; // esce dal while
> }
> }
Ottimo, si fa anche in python, non vedo problemi.
> class Break(Exception):
> def __init__(self, value):
> self.value = value
> def __str__(self):
> return repr(self.value)
> def get(self):
> return self.value
> lista = {('value a'):'a', ('value b'):'b', ('value c'):'c'}
>
> try:
> for chiave, valore in lista.iteritems():
> print chiave, valore
> if valore == 'b':
> print '-- fine iterazione --'
> raise Break(lista)
> except Exception, lista:
> lista = lista.get()
> for chiave, valore in lista.iteritems():
> print chiave, valore
Invece di usare una linea con scritto solo break per terminare tutto,
scrivi sto popo` di linee.
Ci saranno piu` possibilita` di avere bachi in un 'break' o in quello
che hai scritto tu?
Bisogna essere pragmatici nella vita. Prima di dire NO a una soluzione
e` utile valutare le alternative,
come hai fatto tu, ma una volta visto che l'alternativa non offre nulla
di meglio (e in questo caso
e` chiaro come l'oro per piu` ragioni, ad esempio hai un except
Exception, ovvero prendi quasi tutto
praticamente.) si torna sulla propria strada.
Perche` mai il break sarebbe adatto agli switch e non al resto? Per
abitudine? ti abituerai anche a
vederlo negli iteratori, l'unico effetto che ha una break e` che, quando
messa in un ciclo (while o for),
obbliga a tornare a un livello di indentazione in meno alla fine del
corpo del for. Cosa che guardando
il codice e` assolutamente immediata e chiara.
Ci sono tanti tanti miti sul perche` evitare di usare X o Y. E ci sono
altrettanti esempi di come usandoli
nel modo giusto X e Y non fanno alcun danno, anzi. Migliorano la
leggibilita`.
--
Valentino Volonghi aka Dialtone
Now Running MacOSX 10.3.8
Blog: http://vvolonghi.blogspot.com
http://weever.berlios.de
More information about the Python
mailing list