[Python-es] Programa para pasar de decimal a binario con GUI Qt4
Ramon Villalonga Gómez
ramonvillalongagomez en gmail.com
Lun Ago 30 23:25:14 CEST 2010
Me suena a chino todas estas funciones :S
Ya le echaré un ojo con paciencia, y miraré de resolver el pendiente ;)
Un saludo :)
2010/8/30 Arnau Sanchez <pyarnau en gmail.com>
> On Mon, 30 Aug 2010 19:39:11 +0200 Ramon Villalonga Gómez wrote:
>
> > No sabía que se puede hacer a través de la funcion int() y no tengo
> > ni idea de como hacer el código en una línea.
>
> Una versión simple teniendo en cuenta que las potencias de 2 son
> desplazamientos (shift) hacia la izquierda:
>
> def strbin2int(s):
> return sum(int(x)*(1 << pos) for (pos, x) in enumerate(reversed(s)))
>
> Pero no hace falta calcular el sumando cuando el dígito es 0, así que
> llevamos
> el int() al iterable y queda algo más eficiente:
>
> def strbin2int(s):
> return sum(1 << pos for (pos, x) in enumerate(map(int, reversed(s))) if
> x)
>
> Y con la misma idea, generalizando para base <= 10:
>
> def str2int(s, base=10):
> return sum(x*(base**pos) for (pos, x) in
> enumerate(map(int, reversed(s))) if x)
>
> El int2str() de 3 líneas (¿o menos?) queda como ejercicio para el lector
> ;-)
>
> arnau
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100830/95ed271b/attachment.html>
Más información sobre la lista de distribución Python-es