En este caso usted tiene una manera de evitar try
/except
, aunque yo no lo recomendaría (suponiendo que la cadena de entrada se denomina s
, y estás en una función que debe devolver algo):
xs = s.strip()
if xs[0:1] in '+-': xs = xs[1:]
if xs.isdigit(): return int(s)
else: ...
la parte ...
en el else
es donde regresa lo que sea que quiere si, por ejemplo, s
fue 'iamnotanumber'
, '23skidoo'
,, todos los espacios vacíos, o similares.
A menos que una gran cantidad de sus cadenas de entrada no eran números, try/except es mejor:
try: return int(s)
except ValueError: ...
se ve la ganancia en la concisión, y para evitar la manipulación de cadenas más incómoda y la prueba -)
Veo muchas respuestas do int(s.strip())
, pero eso es supererogatorio: ¡no es necesario pelar!
>>> int(' 23 ')
23
int
sabe lo suficiente como para ignorar espacio inicial y final por sí mismo!-)
"Nunca quiero que el método falle, pero no quiero ir tan lejos como intentar, excepto, pasar solo para ocultar errores" Eso ciertamente parece contradictorio. "Never Fail" significa "Excepciones de captura". ¿Qué quiere decir con "Never Fail" y "NOT Catch Exceptions"? ¿Qué es esto de no fallas y sin excepciones que estás esperando? ¿Puedes aclarar tus expectativas? –