On 12/01/2011 11.29, lordkrandel wrote: > Il bugfix è veloce, ci penso un po' su e lo scrivo meglio quando ho un > attimo.
def f( bytes, factor, labels, precision ): # costruisco una tupla di tuple ( limite massimo, etichetta ) # prima faccio l'enumerazione delle etichette, poi faccio fattore**indice for n, label in map( lambda k: ( factor**k[0], k[1] ), enumerate(labels,1) ): # se i byte sono sotto il limite, o se è l'ultima etichetta disponibile if (bytes < n) or (label == labels[-1]): # ritorna una stringa formattata con i byte # con l'etichetta corrente e la precisione indicata return ('%.' + str(precision) + 'lf %s') % (bytes * factor / n, label) def f_test(): for x in range(22): y = 512.12*(10**x) print f(y, 1024, ('', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'), 4) print ' ', f(y, 1000, ('', 'KB', 'MB', 'GB', 'TB', 'PB' ), 2) f_test() Continuo a pensare che per funzioni il cui codice andrà a cambiare poco nel corso del tempo, più della chiarezza della sintassi del codice conti la chiarezza della funzionalità che offre. Certo capire come funziona non è proprio semplicissimo, ma in quello possono aiutare due righe di commento. -- Wyrmskull _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python