Python - While con TRY_EXCEPT

 
Vista:
sin imagen de perfil
Val: 6
Ha disminuido su posición en 19 puestos en Python (en relación al último mes)
Gráfica de Python

While con TRY_EXCEPT

Publicado por Kelvin (3 intervenciones) el 22/10/2019 09:30:57
Hola, estoy siguiendo el curso de Python por EDX y en un ejercicio el profesor lo resolvió de una forma (nombre de la imagen: PROFE) pero yo quise hacerlo de otra forma solo en la parte del input y no salió como debía (nombre de la imagen: kelvinn).

El programa consiste en ingresar un número en forma sucesiva, pero cuando se ingrese algo que no sea número saldrá un mensaje de error y continuará el programa y uno sigue ingresando más números, pero si pone FIN, entonces terminará el input e imprimirá EL CONTEO, LA SUMA Y EL PROMEDIO de todos los datos ingresados.

Yo quiero saber por qué no funciona como yo hice. El cambio fue que pongo num=float(input("...")) o sea poner en una sentencia el float y el imput, pero el profesor lo divide en dos sval=input("...") y luego fval=float(sval). Yo creo que lo mío debería funcionar, pero el TRY_EXCEPT al parecer no lee el IF NUM=="FIN": BREAK y no entiendo por qué no lo lee, porque cuando pongo FIN solo aplica el EXCEPT y manda el mensaje de ENTRADA INVALIDA cuando en realidad el programa debería detenerse e imprimir el conteo, la suma y el promedio. Gracias.
profe
kelvinn
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jaime
Val: 526
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

While con TRY_EXCEPT

Publicado por Jaime (136 intervenciones) el 22/10/2019 16:33:53
Es que lo que pasa es el código de la imagen "kelvinn", en el input, se lanza la excepción apenas se ingresa un carácter diferente a un número! Por ende, se queda en un ciclo infinito. La excepción se debe a que conviertes en float el input, entonces nunca se podrá escribir "fin".
Lo mejor es recibir el input, verificar si se ingresó "fin", si no es así, entonces convertirlo a float, si lanza excepción, hay un carácter no numérico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar