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ú.