Re: [pyar] Re: ¿If anidado?

Página superior
Adjuntos:
+ (text/plain)

Responder a este mensaje
Autor: Roberto Alsina
Fecha:  
A: pyar
Asunto: Re: [pyar] Re: ¿If anidado?
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/