Re: [pyar] ¿If anidado?

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

Responder a este mensaje
Autor: Alejandro Santos
Fecha:  
A: pyar
Asunto: Re: [pyar] ¿If anidado?
2009/9/16 Charif Mauricio Nadir <mry.shariff@???>:
>> while True:
>>        edad=raw_input('¿Cuantos años tenes?')
>>        if edad.isdigit():
>>                break
>>        print 'No ingresaste un numero!'
>>
>> Pero no tengo el pythonometro a mano ;-)
>
> El uso de la sentencia break está considerada como una mala práctica, al
> igual que continue. El flujo de un programa debe ser fácil de seguir sin
> saltos y sin interrumpir el flujo de las estructuras de control.
> Usarlas adentro de un for o while generalmente es señal de una mala
> definición de la condición de salida. Como se da en este caso.


Una alternativa en el mundo de C/C++ es asignar la variable dentro de
la condicion del while, pero en Python eso es un error de sintaxis por
muy buenas razones: si te equivocas al querer preguntar por igualdad y
ponés un solo igual en vez de los dos vas a tener un bug dificil de
encontrar:

>>> while not (edad = raw_input()).isdigit():

File "<stdin>", line 1
while not (edad = raw_input()).isdigit():
^
SyntaxError: invalid syntax

Ahora, el asunto del break que no se puede usar es muy subjetivo. Eso
data de lo que se conocia como "programación estructurada" cuando la
gente programaba en cosas raras como COBOL o Pascal donde tenias
codigo horroroso. La idea es que, dada una función, puede haber un
solo flujo de código (de ahi que tambien el goto no está bien visto).

+1 para la version con el break :)

-- 
Alejandro Santos,
http://www.alejolp.com.ar


---------------------------------------------------------------------
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/