Функция 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