Control de errores
Publicado por Gustavo (24 intervenciones) el 28/05/2020 13:51:13
Hola:
Estoy queriendo validar una entrada de un entero en un rango, el rango está medianamente manejado.
El tema es que el usuario ingrese caracteres no numéricos, letras o cadenas.
Intenté try except
Y funciona bien:
Pero consideremos que el usuario es un cretino que se cree que sabe mucho inglés.
Bien.
Ya sé que estoy manejando una excepción dentro de una excepción, y será así mientras el tonto usuario no entienda.
Alguien podría ayudarme?
Desde ya, muchas gracias por la paciencia y el tiempo.
Estoy queriendo validar una entrada de un entero en un rango, el rango está medianamente manejado.
El tema es que el usuario ingrese caracteres no numéricos, letras o cadenas.
Intenté try except
1
2
3
4
5
6
7
8
9
10
11
12
valido = True
while valido:
try:
num = int(input('Ingrese valor: '))
if num < 5 or num > 10:
num = int(input('El valor debe ser entre 5 y 10\nIngrese valor: '))
else:
valido = False
except ValueError:
num = int(input('Debe ingresar numeros enteros.\nIngrese valor: '))
valido = False
print(num, 'x 3 =', num*3))
Y funciona bien:
1
2
3
4
5
======== RESTART: C:/... ========
Ingrese valor: seis
Debe ingresar numeros enteros.
Ingrese valor: 6
6 x 3 = 18
Pero consideremos que el usuario es un cretino que se cree que sabe mucho inglés.
1
2
3
4
5
6
7
8
9
10
11
12
13
======== RESTART: C:/... ========
Ingrese valor: seis
Debe ingresar numeros enteros.
Ingrese valor: six
"Traceback (most recent call last):
File "C:/...", line 4, in <module>
num = int(input('Ingrese valor: '))
ValueError: invalid literal for int() with base 10: 'seis'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/...", line 10, in <module>
num = int(input('Debe ingresar numeros enteros.\nIngrese valor: '))
ValueError: invalid literal for int() with base 10: 'six'"
Bien.
Ya sé que estoy manejando una excepción dentro de una excepción, y será así mientras el tonto usuario no entienda.
Alguien podría ayudarme?
Desde ya, muchas gracias por la paciencia y el tiempo.
Valora esta pregunta


0