Перейти к содержимому

Как обозначается целочисленное деление python

  • автор:

Целочисленное деление в Python

Как вы знаете, в Python есть два способа делить целые числа.

Оператор / при делении целого числа на целое возвращает результат типа float.

>>> 3 / 2 1.5 # float

А оператор // при делении целого на целое возвращает целое с округлением вниз, по-английски этот оператор еще называют floor division.

>>> 3 // 2 1 # int

Копалась в истории языка и узнала, что изначально деление целых чисел в Python было только целочисленное, и для него Гвидо использовал символ / . Но быстро стало понятно, что в языке, где программист не объявляет типы явно, использование такого символа неудобно и будет приводить к обилию ошибок в программах.

Поэтому часть сообщества (включая Гвидо) настаивала на том, что оператором целочисленного деления нужно выбрать символ // , а оператор деления, который возвращает тип float, должен быть /. Другие разработчики говорили, что целочисленное деление нужно писать как /, аргументируя это тем, что «научиться обращаться с целочисленным делением — это как обряд инициации для начинающих программистов», да и в C целочисленное деление пишется именно так.

Вот что Гвидо пишет об этом в своем блоге (в моем вольном переводе):

Чтобы услышать мнение человека, далекого от программирования, я спросил свою подругу, которая занималась средневековой английской литературой. Разговор был примерно такой:

Я: Вот ты берешь два целых числа. Хорошо?
Она: Хорошо!
Я: Теперь ты можешь их сложить, вычесть, умножить в программе, правильно?
Она: Хм, конечно!
Я: А теперь предположим, что ты их делишь…
Она: Но в этом нет смысла! Целые числа образуют кольцо, а не поле. Ты ведь сказал, что взял эти числа из Z, верно?
Я: Ага.

Вот и все. Это точка зрения непрограммиста (с которой мне удобно согласиться). Целочисленное деление — это чушь и его не нужно писать как «/», даже если в C делают именно так;-)

Действительно, с точки зрения непрограммиста, целочисленное деление довольно странная история, ведь над целыми числами, как и над матрицами, нет деления в принципе!

  • http://python-history.blogspot.com/2009/03/problem-with-integer-division.html
  • https://www.python.org/doc/humor/#neutral-testimony.

Как обозначается целочисленное деление python

Скачай курс
в приложении

Перейти в приложение
Открыть мобильную версию сайта

© 2013 — 2023. Stepik

Наши условия использования и конфиденциальности

Get it on Google Play

Public user contributions licensed under cc-wiki license with attribution required

Функция divmod() в Python

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

divmod(a, b)

На выходе получается кортеж, состоящий из их частного и остатка при использовании целочисленного деления.

Для целочисленных аргументов результат такой же, как (a // b, a% b).

Для чисел с плавающей запятой результат будет (q, a% b), где q обычно (math.floor (a / b), a% b). В любом случае q * b + a% b очень близко к a.

Если a% b не равно нулю, он имеет тот же знак, что и b, и 0

Пример с целыми числами

# simple example, returns (a // b, a % b) for integers dm = divmod(10, 3) print(dm) x, y = divmod(10, 3) print(x) print(y) dm = divmod(0xF, 0xF) # hexadecimal print(dm)
(3, 1) 3 1 (1, 0)

Пример с числами с плавающей запятой

# floats, returns usually (math.floor(a / b), a % b) dm = divmod(10.3, 3) print(dm) dm = divmod(11.51, 3) print(dm) dm = divmod(-11.51, 3) print(dm)
(3.0, 1.3000000000000007) (3.0, 2.51) (-4.0, 0.4900000000000002)

Обратите внимание, что в случае с плавающей запятой q * b + a% b в некоторых случаях очень близко к a.

Пример с комплексными числами

Если мы передадим комплексные числа в качестве аргумента, мы получим TypeError.

dm = divmod(3 + 2J, 3)

Теоретический материал Деление без остатка
Чтобы выполнить деление на цело в Python, можно воспользоваться целочисленным делением. В этом случае результатом будет целое число, без остатка. Целочисленное деление в Python обозначается двумя косыми чертами «//».
В отличие от других языков программирования Python позволяет результату целочисленного деления быть как целым (int), так и дробным (float) числом. В обоих случаях дробная часть отбрасывается и получается число с окончанием «.0».
Примеры нахождения целой части от деления:
print(5 // 2)
print(0 // 2)
print(1234 // 5.0)

2
0
246.0
В первых двух случаях деление осуществлялось между целыми числами. Поэтому в результате было получено целое число. В третьем примере одно из чисел вещественное. В этом случае в результате получаем так же вещественное число (типа float), после запятой у которого 0.
Остаток
Для получения остатка от деления в Python 3 используется операция, обозначающаяся символом процента «%». Остаток — это оставшаяся после целочисленного деления часть числа. Операция взятия остатка используется для решения различных видов задач.
Примеры:
print(10 % 3)
print(5 % 10)
print(5 % 0.25)

1
5
0.0
Определение остатка от деления очень часто используется в программах для нахождения, допустим, чётных чисел. Или, например, если обработка данных выполняется в цикле, и нужно выводить в консоль сообщение о ходе обработки не каждый раз, а на каждой 10-ой итерации.

Домашнее задание 3_1

Решение записать в тетрадь.

45 // 10 =
450 % 10 =
231 //100 =
312 % 100 =
(520 // 10) % 10 =
8456 % (261 //100) =
Пусть а = 26 и b = 6. Вычислите значение переменной с.
c = (а % b) + b
c = (а // b) + a
c = а % (b + 1)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *