Así que ya tiene el programa perfecto, funciona sin errores, excepto
por un pequeño detalle: se muere si el usuario introduce información
no válida. No tema, porque Python tiene una estructura de control
especial para usted. Se llama try
(intentar) e intenta
hacer "algo". Aquí tiene un ejemplo de un programa con un problema:
print "Escriba Control C or -1 para cerrar el programa"
numero = 1
while numero != -1:
numero = int(raw_input("Escriba un numero: "))
print "Usted escribio: ",numero
Observer ahora, cuando usted escribe @#&
la salida es
algo así:
Traceback (innermost last):
File "try_less.py", line 4, in ?
number = int(raw_input("Enter a number: "))
ValueError: invalid literal for int(): @#&
Como puede ver, la función int
no está nada
contenta con el número @#&
(tal como debe ser). El
último renglón muestra cuál es el problema; Python encontró
un ValueError
(Valor Erróneo). ¿Cómo
puede manejar esto en su programa? Lo primero que hacemos es: ponemos
el lugar donde ocurren los errores en un bloque try
, y luego:
le decimos a Python qué queremos que haga con los errores de tipo
ValueError
. El siguiente programa hace esto:
print "Escriba Control C or -1 para cerrar el programa"
numero = 1
while numero != -1:
try:
numero = int(raw_input("Escriba un numero: "))
print "Usted escribio: ",number
except ValueError:
print "Eso no es un numero."
Ahora, cuando ejecutamos el nuevo programa y le damos un @#&
nos dice ``Eso no es un número.'' y continúa con lo que estaba
haciendo.
Cuando su programa tiene algún error que usted sabe cómo
manejar, pónga el código en un bloque try
, y ponga
el modo de manejar el error en el bloque except
.
Actualice por lo menos el programa de números telefónicos para que no truene si el usuario escribe cualquier dato en el menú.