2009/9/16 Facundo Batista <facundobatista@???>
> 2009/9/16 Charif Mauricio Nadir <mry.shariff@???>:
>
> > 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.
>
> No estoy de acuerdo.
>
> ...
> while True:
> edad = raw_input(mssg)
> if edad.isdigit():
> break
>
> print "no nro"
>
> El problema de los while True y los breaks es que hacen el análisis de
correctitud y terminación por invariantes casi imposible.
Están deprecados en el mundo de la programación porque es muy difícil,
leyéndolos, asegurar que no es un loop infinito, y que cuando sale el
invariante (si hay) se cumple.
Aquí, claro está, realmente podría ser un loop infinito (el usuario nunca
tipea un número), y el único invariante deseado es "edad.isdigit()" -
nuevamente, ese while True hace menos evidente que al salir del loop, edad
es en efecto un número.
Por eso yo propongo:
edad = None
while edad is None or not edad.isdigit():
edad = raw_input("dale... un numerito...")
La ventaja: al salir del loop uno sabe:
1) que "edad is not None" (útil)
2) que "edad.isdigit()" (útil)