Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/05/2014, 12:58
Koan
 
Fecha de Ingreso: diciembre-2009
Ubicación: Spain
Mensajes: 180
Antigüedad: 14 años, 11 meses
Puntos: 9
¿Evitar que un código se interrumpa por un dato incorrecto?

Una de las cosas que me gustaría aprender desde el principio, es, que si una función nos pide un argumento y nosotros le introducimos un dato por error (o por que nos da la gana) el código no se interrumpa y nos muestre una advertencia. Luego, claro esta, nos permita la oportunidad de hacerlo de nuevo correctamente.

Estoy con un curso donde se define una función donde nos pide la temperatura del agua. Nos muestra entonces el estado del liquido.

Código Python:
Ver original
  1. def estado_agua(num):
  2.     if (type(num) == int) or (type(num) == float):
  3.         if (num <= 0):
  4.             return ('La temperatura es '+str(num)+' grados. Su estado es solido.')
  5.         elif (num > 0) and (num <= 100):
  6.             return ('La temperatura es '+str(num)+' grados. Su estado es liquido.')
  7.         elif (num > 100):
  8.             return ('La temperatura es '+str(num)+' grados. Su estado es gaseoso.')
  9.     else:
  10.         print('Valor incorrecto')

Esta primera linea
Código Python:
Ver original
  1. if (type(num) == int) or (type(num) == float):

nos permite entrar en el siguiente IF si introducimos datos int o float. Si no lo hacemos (ponemos un string o bool) nos devuelve el else. Osea, funcionaría bien.

Pero si ponemos:

estado_agua()

ó

estado_agua(var) # Cualquier palabra sin comillas.

Nos devuelve un error. No se ejecuta el else

¿Cómo hacemos en esos casos?