[pyar] Hello yucky world!
Julio Cesar Gazquez
juliogazquez en yahoo.com.ar
Mie Jul 14 00:25:30 ART 2010
El Mar 13 Jul 2010, Federico Heinz escribió:
> A partir de un dent de Roberto Alsina de ayer, un "Hello world" para
>
> el olvido:
> >>> import sys
>
> >>> def hello(m=['\n', '!', 'd', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l',
'e', 'H']):
> ... sys.stdout.write(m.pop())
> ... return len(m)
> ...
>
> >>> while hello() > 0:
> ... pass
> ...
> Hello world!
>
> >>> while hello(['\n', '!', 'd', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l',
'e', 'H']) > 0:
> ... pass
> HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH^C
>
> Sí, sé por qué pasa, y la verdad es que no se me ocurre ahora una
> manera elegante de corregirlo sin generar más problemas aún. Pero las
> reminiscencias de Fortran redefiniendo el valor de 4 no me van a
> dejar dormir esta noche. Aunque es probable que una medida de Jack
> Daniel's ayude.
A continuación todas las formas válidas que se me ocurren, supongo que te
habrás planteado alguna de estas, no sé que es lo que puede no gustarte de
cada una. Como sea, la más pythónica en mi opinión es la 2, y la menos, el
bonus track :-P
##### Forma 1 ######
# Pros: La más simple
# Contras: m queda fuera de hello
import sys
m=['\n', '!', 'd', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e', 'H']
def hello():
sys.stdout.write(m.pop())
return len(m)
while hello()>0:
pass
##### Forma 2 ######
# Pros: Probablemente la más pythónica
# Contras: hello no es una función normal, tengo que usar hello.next()
import sys
def hello(m=['\n', '!', 'd', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e',
'H']):
while True:
sys.stdout.write(m.pop())
yield len(m)
hello=hello()
while hello.next()>0:
pass
##### Forma 3 ######
# Pros: Pythónica
# Contras: Es algo así como la 2 pero sin azúcar (sintáctica)
import sys
class hello:
m=['\n', '!', 'd', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e', 'H']
def __call__(self):
sys.stdout.write(hello.m.pop())
return len(hello.m)
while hello()()>0:
pass
### Y por último, algo completamente diferente! :-P
# Pros: Exactamente lo que quiere Fede, un chimpancé puede traducir el código
# Python a C. (Un orangután no, ellos sólo pueden programar en Ook!)
# Contras: Requiere una versión especial de Python que soporta una PEP
# que sólo podría ser aceptada un 1ro de abril
#!/usr/bin/python-april-fools-pep-fheinz
def hello():
static m=['\n', '!', 'd', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e',
'H']
sys.stdout.write(m.pop())
return len(m)
while hello()>0:
pass
# Bueno, este es mi pequeño aporte a la chacota lingüística. Muy interesante
lo del Fortran, supongo que en aquella época las alternativas eran pegarte un
tiro en el pie cambiando el valor de 5, o bien programar en PL/1 usando if y
else como variables dentro de un bloque if :-) Tampoco avanzamos tanto, ahora
podemos hacer las mismas c****** en Python!
--
Saludos,
Julio César Gázquez
More information about the pyar
mailing list