Таким образом, я довольно сильно зациклен на том, как преобразовать строку в int, используя функцию try/except. Кто-нибудь знает простую функцию о том, как это сделать? Я чувствую, что я все еще немного туман на струнах и ints. Я довольно уверен, что ints связаны с числами. Строки... не так много.
Преобразование String в Int с использованием try/except в Python
Ответ 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'