Подтвердить что ты не робот

Преобразование String в Int с использованием try/except в Python

Таким образом, я довольно сильно зациклен на том, как преобразовать строку в int, используя функцию try/except. Кто-нибудь знает простую функцию о том, как это сделать? Я чувствую, что я все еще немного туман на струнах и ints. Я довольно уверен, что ints связаны с числами. Строки... не так много.

4b9b3361

Ответ 1

Важно указать, какое исключение вы пытаетесь поймать при использовании блока try/except.

string = "abcd"
try:
    i = int(string)
    print i
except ValueError:
    #Handle the exception
    print 'Please enter an integer'

Try/Excepts являются мощными, потому что, если что-то может потерпеть неудачу несколькими различными способами, вы можете указать, как вы хотите, чтобы программа реагировала в каждом случае сбоя.

Ответ 2

Вот он:

s = "123"
try:
  i = int(s)
except ValueError as verr:
  pass # do job to handle: s does not contain anything convertible to int
except Exception as ex:
  pass # do job to handle: Exception occurred while converting to int

Ответ 3

Во-первых, try/except не являются функциями, а операторами.

Чтобы преобразовать строку (или любой другой тип, который можно преобразовать) в целое число в Python, просто вызовите int() встроенная функция. int() будет raise a ValueError, если он терпит неудачу, и вы должны поймать это конкретно:

В Python 2.x:

>>> for value in '12345', 67890, 3.14, 42L, 0b010101, 0xFE, 'Not convertible':
...     try:
...         print '%s as an int is %d' % (str(value), int(value))
...     except ValueError, ex:
...         print '"%s" cannot be converted to an int: %s' % (value, ex)
...
12345 as an int is 12345
67890 as an int is 67890
3.14 as an int is 3
42 as an int is 42
21 as an int is 21
254 as an int is 254
"Not convertible" cannot be converted to an int: invalid literal for int() with base 10: 'Not convertible'

В Python 3.x

синтаксис слегка изменился:

>>> for value in '12345', 67890, 3.14, 42, 0b010101, 0xFE, 'Not convertible':
...     try:
...         print('%s as an int is %d' % (str(value), int(value)))
...     except ValueError as ex:
...         print('"%s" cannot be converted to an int: %s' % (value, ex))
...
12345 as an int is 12345
67890 as an int is 67890
3.14 as an int is 3
42 as an int is 42
21 as an int is 21
254 as an int is 254
"Not convertible" cannot be converted to an int: invalid literal for int() with base 10: 'Not convertible'