Функция int

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

Если вызвать функцию int() без аргументов, она вернет 0.

>>> int()
0

Чаще всего функции int() передают один аргумент, который может быть либо строкой, либо числом. Строки должны быть символьными представлениями целого числа, иначе будет выброшено исключение.

>>> int('4')
4
>>> int('3a')
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    int('3a')
ValueError: invalid literal for int() with base 10: '3a'

Если передать функции целое число, то она вернет его же. Если передать вещественное число, то оно будет округлено до целого в сторону нуля (т. е. дробная часть будет отброшена).

>>> int(87)
87
>>> int(-103)
-103
>>> int(234.879)
234
>>> int(-0.3)
0
>>> int(-0.9)
0

Попытка преобразовать строку, содержащую вещественное число, в целое число с помощью функции int() вызывает ошибку.

>>> int('101.1')
Traceback (most recent call last):
  File "<pyshell#37>", line 1, in <module>
    int('101.1')
ValueError: invalid literal for int() with base 10: '101.1'

Чтобы преобразовать дробное число в строковом представлении в целое число, сначала можно использовать функцию float(), затем int().

>>> int(float('15.76'))
15

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

>>> int('12', 8)
10
>>> int('13h', 20)
477
>>> int('111001', 2)
57

Основание системы счисления не должно превышать 36.

>>> int('w0y', 36)
41506
>>> int('w0y', 37)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: int() base must be >= 2 and <= 36, or 0

Для двоичной, восьмеричной и шестнадцатеричной систем счисления можно использовать префиксы. Если такое представление числа заключается в кавычки, то второй аргумент обязателен.

>>> int(0b11)
3
>>> int(0o10)
8
>>> int(0xA5)
165
>>> int('0b11')
Traceback (most recent call last):
  File "<pyshell#48>", line 1, in <module>
    int('0b11')
ValueError: invalid literal for int() with base 10: '0b11'
>>> int('0b11', 2)
3

В классах функцию int() переопределяют методы __int__(), __index__(), __trunc__().

>>> class A:
...     a = 'H'
...     def __int__(self):
...             return ord(self.a)
...
>>> obj = A()
>>> int(obj)
72
>>> obj.a = '!'
>>> int(obj)
33