Python для подготовки к олимпиадам, начальный уровень (7-9 классы) (СОШ г. Набережные Челны)
Теоретический материал по теме «Целочисленная арифметика»
Целочисленный тип (int) в Python
Д.П. Кириенко — Программирование на языке Python (школа 179 г. Москвы)
Для хранения целых чисел в Python используется тип int (от англ, integer — целое число). Этот тип позволяет хранить как положительные, так и отрицательные числа, при этом сколь угодно большие (в отличие от большинства языков программирования, где целочисленная переменная обычно занимает лишь несколько байт). Более точно, размер числа ограничен лишь имеющейся памятью.
Для преобразования к целому типу используется функция одноименная с именем типа — int:
s = int(input()) t = int(2.5)
Для целых чисел определены арифметические операции:
* умножение (пропускать его в выражениях вида 2 * х нельзя);
\// целочисленное деление (дробная часть отбрасывается);
\% остаток от деления;
** возведение в степень.
В арифметических выражениях порядок действий соответствует принятому в математике, для изменения порядка действий используются круглые скобки:
(х — а) * 2 — (а — (1 — с))
Функция abs(x) возвращает модуль (абсолютное значение) числа х.
Присваивания вида х = х + а, х = х // а и т.п. можно писать сокращенно: х += а, х //= а.
Пример считывания одного числа
s = int(input ())
Пример считывания двух чисел, вводимых в разных строчках
s = int(input()) t = int(input ())
Пример считывания двух чисел, вводимых в одной строке через пробел
s, t = map(int, input().split()) # читаем строку, режем по пробелу # с помощью split, и к каждой части # применяем функцию int
Функция int
В языке программирования Python встроенная функция int() возвращает целое число (экземпляр класса int ) в десятичной системе счисления. Если преобразовать переданный в функцию первый или единственный аргумент в десятичное число не удается, то генерируется исключение ValueError .
Если вызвать функцию int() без аргументов, она вернет 0.
>>> int() 0
Чаще всего функции int() передают один аргумент, который может быть либо строкой, либо числом. Строки должны быть символьными представлениями целого числа, иначе будет выброшено исключение.
>>> int('4') 4 >>> int('3a') Traceback (most recent call last): File "", line 1, in 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 "", line 1, in 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 "", line 1, in ValueError: int() base must be >= 2 and
Для двоичной, восьмеричной и шестнадцатеричной систем счисления можно использовать префиксы. Если такое представление числа заключается в кавычки, то второй аргумент обязателен.
>>> int(0b11) 3 >>> int(0o10) 8 >>> int(0xA5) 165 >>> int('0b11') Traceback (most recent call last): File "", line 1, in 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
Класс int() в Python, преобразует в тип int
Позволяет преобразовать число или строку с числом в тип int
Синтаксис:
int(x) int(x, base=10)
Параметры:
- x - число или строка,
- base - числовой формат, по умолчанию 10.
Возвращаемое значение:
Описание:
Класс int() возвращает целочисленный объект, созданный из числа или строки x , или возвращает 0 , если аргументы не заданы.
- Если x определяет __int__() , то int(x) возвращает x.__int__() .
- Если x определяет __index__() , то он возвращает x.__index__() .
- Если x определяет __trunc__() , то он возвращает x.__trunc__() .
- Для чисел с плавающей запятой это усекается до нуля.
Если аргумент не число или если задан числовой формат base , то аргумент должен быть строкой, байтами, или экземпляром bytearray , представляющим литерал целого числа по основанию base . Литералу может предшествовать + или - без пробела между ними и может окружать пробелами.
Литерал с основанием n состоит из цифр от 0 до n-1, где числа от a до z (или от A до Z ) имеют значения от 10 до 35 .
По умолчанию base=10 . Допустимые значения 0 и от 2 до 36. Основания 2, 8, и 16 могут иметь необязательные префиксы 0b / 0B , 0o / 0O или 0x / 0X соответственно. Основание base=0 означает интерпретацию x точно, как литерал кода, таким образом int('010', 0) не является правильным, в то время как int('010') верно, а также верно int('010', 8) .
*Изменено в Python 3.4: если base не является экземпляром int и у базового объекта есть метод base.__index__ , то он вызывается для получения целого числа для base . Предыдущие версии использовались base.__int__ вместо base.__index__ .
*Изменено в Python 3.6: допускается группировка цифр с подчеркиванием, как в литералах кода.
*Изменено в Python 3.7: x теперь является позиционным параметром.
*Изменено в Python 3.8: Откат к __index__() если __int__() не определен.
Изменено в Python 3.11: строковые входные данные и представления строк могут быть ограничены, чтобы избежать атак типа "отказ в обслуживании". Когда превышен предел при преобразовании строки x в целое число или когда преобразование целого числа в строку превысит предел => поднимается исключение ValueError . Смотрите "Ограничение длины преобразования целочисленной строки".
Примеры преобразований чисел и строк в тип int .
a = int(3.5) b = int(12.9) c = int('3') d = int(' -3 ') f = int('0b11', 2) y = int('0o12', base=8) z = int('0xa', base=16) print(a, b, c, d, f, y, z) # Вывод 3, 12, 3, -3, 10, 10, 10
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функция abs(), абсолютное значение числа
- Функция all(), все элементы True
- Функция any(), хотя бы один элемент True
- Функция ascii(), преобразует строку в ASCII
- Функция bin(), число в двоичную строку
- Класс bool(), логическое значение объекта
- Функция breakpoint(), отладчик кода
- Класс bytearray(), преобразует в массив байтов
- Класс bytes(), преобразует в строку байтов
- Функция callable(), проверяет можно ли вызвать объект
- Функция chr(), число в символ Юникода
- Класс classmethod, делает функцию методом класса
- Функция compile() компилирует блок кода Python
- Класс complex(), преобразует в комплексное число
- Функция delattr(), удаляет атрибут объекта
- Класс dict() создает словарь
- Функция dir(), все атрибуты объекта
- Функция divmod(), делит числа с остатком
- Функция enumerate(), счетчик элементов последовательности
- Функция eval(), выполняет строку-выражение с кодом
- Функция exec(), выполняет блок кода
- Функция filter(), фильтрует список по условию
- Класс float(), преобразует в вещественное число
- Функция format(), форматирует значение переменной
- Класс frozenset(), преобразует в неизменяемое множество
- Функция getattr(), значение атрибута по имени
- Функция globals(), переменные глобальной области
- Функция hasattr(), наличие атрибута объекта
- Функция hash(), хэш-значение объекта
- Функция help(), справка по любому объекту
- Функция hex(), число в шестнадцатеричную строку
- Функция id(), идентификатор объекта
- Функция input(), ввод данных с клавиатуры
- Класс int(), преобразует в тип int
- Функция isinstance(), принадлежность экземпляра к классу
- Функция issubclass(), проверяет наследование класса
- Функция iter(), создает итератор
- Функция len(), количество элементов объекта
- Класс list(), преобразовывает в список
- Функция locals(), переменные локальной области
- Функция map(), обработка последовательности без цикла
- Функция max(), максимальное значение элемента
- Класс memoryview(), ссылка на буфер обмена
- Функция min(), минимальное значение элемента
- Функция next(), следующий элемент итератора
- Класс object(), возвращает безликий объект
- Функция oct(), число в восьмеричную строку
- Функция open(), открывает файл на чтение/запись
- Функция ord(), число символа Unicode
- Функция pow(), возводит число в степень
- Функция print(), печатает объект
- Класс property(), метод класса как свойство
- Класс range(), генерирует арифметические последовательности
- Функция repr(), описание объекта
- Функция reversed(), разворачивает последовательность
- Функция round(), округляет число
- Класс set(), создает или преобразовывает в множество
- Функция setattr(), создает атрибут объекта
- Класс slice(), шаблон среза
- Функция sorted(), выполняет сортировку
- Декоратор staticmethod(), метод класса в статический метод
- Класс str(), преобразует объект в строку
- Функция sum(), сумма последовательности
- Функция super(), доступ к унаследованным методам
- Класс tuple(), создает или преобразует в кортеж
- Класс type(), возвращает тип объекта
- Функция vars(), словарь переменных объекта
- Функция zip(), объединить элементы в список кортежей
- Функция __import__(), находит и импортирует модуль
- Функция aiter(), создает асинхронный итератор
- Функция anext(), следующий элемент асинхронного итератора
Функция int
Функция int создает новое число из исходного объекта. В первом параметре указываем объект, из которого будем делать строку. Во втором необязательном параметре можно задать числовой формат (по умолчанию 10 ).
Синтаксис
int(число или строка, [числовой формат])
Пример
Давайте с помощью функции int сделаем из строки число:
txt = '123' num = int(txt) print(num) print(type(num))
Результат выполнения кода:
Пример
А теперь давайте из строчного значения сделаем число в восьмеричном формате:
txt = '0o12' num = int(txt, base=8) print(num) print(type(num))
Результат выполнения кода:
Смотрите также
- функция str ,
которая создает строку - функция list ,
которая создает список