[Python] Conversioni su interi.

Federico Figus figus.federico a gmail.com
Mer 8 Maggio 2013 23:03:32 CEST


Ciao,

grazie per i complimenti ma è facile scrivere codice così leggero grazie
alla sintassi di python

print ''.join(base[l] for l in out)[::-1]

praticamente l'espressione base[l] for l in out non fa altro che creare un
generatore che itera sui moduli calcolati precedentemente, e poi prende
ogni l-esimo valore nella stringa base, questo generatore viene passato al
join che concatena tutti i valori resi dal generatore con la stringa vuota
che chiama il join, a questo punto hai la stringa che cercavi ma al
contrario, quindi usi il terzo campo dello slice  [inizio:fine:passo] per
creare una sequenza della stringa col passa al contrario.
Spero di essere stato chiaro, è la prima volta che partecipo a questa
mailing list :D
Comunque puoi trovare tutto sull documentazione in queste pagine
http://docs.python.org/2/tutorial/datastructures.html#list-comprehensions
http://docs.python.org/2/reference/expressions.html#calls

P.S. ci sono altri modi per farlo (anche in una riga sola) ma lascio a te
il divertimento ;)




2013/5/8 Gabriel Battaglia (Kriyaban) <iz4apu a libero.it>

> Ciao Federico.
> Che bello il tuo codice, ha qualcosa che non avevo mai incontrato prima.
> Ti va se ne parliamo un attimo?
>
> ***CODE HERE***
> import string
> # E... fin qui... :)
>
> base = string.printable[:36]
> # Potevo arrivarci ma ho guardato l'help di string.prontable... :) Vero,
> Python ha proprio le batterie incluse è?
>
>
> n = int("gabriel", 36)
> # Questa riga l'ho tolta perchè voglio che n venga ricevuta come parametro
> dalla funzione che mi sto scrivendo.
>
> out = []
> # Ok, qui prepariamo la lista contenitore.
>
> while n:
>    # Significa finchè n è vera, cioè diversa da 0, giusto?
>
>    out.append(n%36)
>    # Qui aggiungiamo il resto della divisione fra n e 36 che sarà sempre
> un intero compreso fra 0 e 35
>
>    n = n/36
>    # ok
>
>
> print ''.join(base[l] for l in out)[::-1]
> # Qui arriva la sorpresa... un ciclo for annidato dentro ad un...??
> # me la spieghi meglio?
>
> Io non sarei mai riuscito a produrre un tale concentrato di efficienza ed
> eleganza messe assieme.
>
> G.
> ______________________________**_________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/**mailman/listinfo/python<http://lists.python.it/mailman/listinfo/python>
>



-- 
*Federico Figus*
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130508/494103d6/attachment-0001.html>


Maggiori informazioni sulla lista Python