В этом случае у вас есть способ избежать try
/ except
, хотя я бы не рекомендовал это (предполагая, что ваша входная строка называется s
, и вы находитесь в функции, которая должна что-то возвращать ):
xs = s.strip()
if xs[0:1] in '+-': xs = xs[1:]
if xs.isdigit(): return int(s)
else: ...
часть ...
в else
- это место, где вы возвращаете все, что хотите, если, скажем, s
было 'iamnotanumber'
, '23skidoo'
, пусто, все пробелы или тому подобное.
Если большинство ваших входных строк не являются числами, попробуйте / исключение лучше:
try: return int(s)
except ValueError: ...
вы видите выигрыш в краткости и в том, чтобы избежать неудобной манипуляции и проверки строки! -)
Я вижу, что многие ответы делают int(s.strip())
, но это суперрегативно: раздевание не нужно!
>>> int(' 23 ')
23
int
знает достаточно, чтобы полностью игнорировать начальные и конечные пробелы! -)