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

Notaras que con "muy fria" vas muerto...... esta es mas a tu gusto creo:

Código Python:
Ver original
  1. def estado_agua(num=None):   
  2.     if (num==None):
  3.         num=0
  4.  
  5.     if (isinstance(num, str)):
  6.         try:
  7.             num = float(num)
  8.         except ValueError:  
  9.             return ("Tipo de dato esperado es no-numerico!")
  10.  
  11.     if (num<-273):
  12.         return ("En el Universo no hay nada por debajo de -273 C")
  13.     elif (num<=0):     
  14.         return ('La temperatura es '+str(num)+' grados. Su estado es solido.')
  15.     elif (num > 0) and (num <= 100):
  16.         return ('La temperatura es '+str(num)+' grados. Su estado es liquido.')
  17.     elif (num > 100):
  18.         return ('La temperatura es '+str(num)+' grados. Su estado es gaseoso.')
  19.  
  20. print(estado_agua());    # ok
  21. print(estado_agua(-200)); # ok
  22. print(estado_agua(0)); # ok
  23. print(estado_agua(10)); # ok
  24. print(estado_agua(104)); # ok
  25. # pasa como numero
  26. #print(estado_agua('20'));
  27. print(estado_agua(-300));
  28.  
  29. # ta tan...
  30. print(estado_agua('muy fria!'));

y no lanzo excepciones.... cosa que a mi me gusta pero creo que a vos no


@Principe_Azul : esto no es una "competencia" pero fijate que pasa si a tu funcion le envias los mismos datos que a esta ultima version... veras que explota sin parametros, con numeros negativos.......etc etc
__________________
Salu2!