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

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

6 ответов

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

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

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

Вот:

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

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

Чтобы преобразовать строку ( или любой другой тип, который можно преобразовать) в целое число в Python, просто вызовите int() встроенная функция. int() будут raise 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 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'

В 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'

К сожалению, официальная документация мало что говорит об исключениях, которые могут возникнуть; однако, когда вы используетеint(), он может вызвать по существу два исключения:TypeError, если значение не является числом или строкой (или байтами, или массивом байтов), иValueErrorесли значение на самом деле не соответствует числу.

Вы должны управлять обоими, примерно так:

      try:
   int_value = int(value)
except (TypeError, ValueError):
    print('Not an integer')

Во многих случаях мы хотим получить от пользователя целочисленное значение. Пользователи могут вводить нецелочисленные значения, о которых следует предупредить и предложить повторить попытку. Следующий фрагмент можно использовать для получения целочисленного значения от пользователя и продолжения подсказки пользователю вставить целое число, пока он не введет действительное.

      def get_integer_value():
  user_value = input("Enter an integer: ")
  try:
    return int(user_value)
  except ValueError:
    print(f"{user_value} is not a valid integer. Please try again.")
    return get_integer_value()


if __name__ == "__main__":
  print(f"You have inserted: {get_integer_value()}")
    

Выход:

      Enter an integer: asd
asd is not a valid integer. Please try again.
Enter an integer: 32
You have inserted: 32

Ты можешь сделать:

try : 
   string_integer = int(string)
except ValueError  :
   print("This string doesn't contain an integer")
Другие вопросы по тегам