On Thursday 17 September 2009 16:30:59 Fabian Ezequiel Gallina wrote:
Aviso... estoy a punto de irme definitivamente a la banquina con mi
propuesta... vean abajo ;-)
> Pero fijate vos cuántas complicaciones y vueltas para lograr algo que
> el if ... break hace de forma tan legible y pythonica :)
>
> En python se da también una situación particular que justo afecta a
> este caso y es que dentro de los fors y los whiles no se pueden hacer
> asignaciones como por ejemplo en C/C++.
>
> Es decir que no se puede hacer algo tipo:
>
> while(!edad = validar_edad()) {
> printf("que sea un numero la proxima");
> }
Como que no!!!!
Claro... es un poco más de laburo. Para darle suspenso, vamos al revés a lo
memento...
Primero la sesión de ejemplo:
[ralsina@hp ~]$ python x.py
Edad? X
Poné un número!
Edad? !
Poné un número!
Edad? 38
Tenes 38 años
Ahora... el código en cuestión:
edad=[1]
while not edad |copado| raw_input('Edad? '):
print u'Poné un número!'
print u'Tenes %s años'%edad[0]
Ahora la definición de |copado|...
def opasigna (x,y):
x[0]=y
return y.isdigit()
copado=Infix(opasigna)
Y ahora la definicion de Infix....
class Infix:
def __init__(self, function):
self.function = function
def __ror__(self, other):
return Infix(lambda x, self=self, other=other: self.function(other,
x))
def __or__(self, other):
return self.function(other)
def __rlshift__(self, other):
return Infix(lambda x, self=self, other=other: self.function(other,
x))
def __rshift__(self, other):
return self.function(other)
def __call__(self, value1, value2):
return self.function(value1, value2)
Desvergonzadamente robado de acá:
http://code.activestate.com/recipes/384122/
Si a alguien se le ocurre como hacer que edad no necesite ser una lista se
agradece ;-)
--
("\''/").__..-''"`-. . Roberto Alsina
`9_ 9 ) `-. ( ).`-._.`) KDE Developer (MFCH)
(_Y_.)' ._ ) `._`. " -.-' http://lateral.netmanagers.com.ar
_..`-'_..-_/ /-'_.' The 6,855th most popular site of Slovenia
(l)-'' ((i).' ((!.' according to alexa.com (27/5/2007)
---------------------------------------------------------------------
Para dar de baja la suscripcion, mande un mensaje a:
pyar-unsubscribe@???
Para obtener el resto de direcciones-comando, mande un mensaje a:
pyar-help@???
PyAr - Python Argentina - Sitio web:
http://www.python.com.ar/