Notaras que con "muy fria" vas muerto...... esta es mas a tu gusto creo:
Código Python:
Ver originaldef estado_agua(num=None):
if (num==None):
num=0
if (isinstance(num, str)):
try:
num = float(num)
except ValueError:
return ("Tipo de dato esperado es no-numerico!")
if (num<-273):
return ("En el Universo no hay nada por debajo de -273 C")
elif (num<=0):
return ('La temperatura es '+str(num)+' grados. Su estado es solido.')
elif (num > 0) and (num <= 100):
return ('La temperatura es '+str(num)+' grados. Su estado es liquido.')
elif (num > 100):
return ('La temperatura es '+str(num)+' grados. Su estado es gaseoso.')
print(estado_agua()); # ok
print(estado_agua(-200)); # ok
print(estado_agua(0)); # ok
print(estado_agua(10)); # ok
print(estado_agua(104)); # ok
# pasa como numero
#print(estado_agua('20'));
print(estado_agua(-300));
# ta tan...
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