Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/05/2014, 14:18
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: ¿Evitar que un código se interrumpa por un dato incorrecto?

El modo correcto es lanzar una excepcion que luego podria ser capturada a nivel de invocacion de estado_agua() o a nivel superior:

Código Python:
Ver original
  1. def estado_agua(num):
  2.     if (type(num) != int) and (type(num) != float):
  3.         raise Exception("Tipo de dato esperado es no-numerico!")
  4.  
  5.    
  6.     if (num<-273):
  7.         raise Exception("En el Universo no hay nada por debajo de -273 C")
  8.     elif (num<=0):     
  9.         return ('La temperatura es '+str(num)+' grados. Su estado es solido.')
  10.     elif (num > 0) and (num <= 100):
  11.         return ('La temperatura es '+str(num)+' grados. Su estado es liquido.')
  12.     elif (num > 100):
  13.         return ('La temperatura es '+str(num)+' grados. Su estado es gaseoso.')
  14.    
  15. print(estado_agua(-200));
  16. print(estado_agua(0));
  17. print(estado_agua(10));
  18. print(estado_agua(104));
  19. # ta tan...
  20. print(estado_agua(-300));

Ya si lo que quieres es evitar errores deberias:

- Hacer casting a numero
- Usar parametros opcionales, si no te dan el estado asumes 0 por ejemplo
__________________
Salu2!