Что произойдёт при делении целого на целое?

При делении целого числа на целое в Python 3 результат будет числом с плавающей точкой (float). Если нужно получить целочисленное деление, используется оператор //.

При делении одного целого числа на другое целое число в Python, поведение зависит от используемой версии Python и оператора деления.

В Python 3 (и Python 2.7 с явным импортом `from __future__ import division`):

  • Оператор / (обычное деление) всегда возвращает число с плавающей точкой (float), даже если результат математически является целым числом.
  • Оператор // (целочисленное деление или деление нацело) возвращает целое число (int), представляющее собой целую часть от результата деления. Остаток отбрасывается. Если хотя бы один из операндов является числом с плавающей точкой, то возвращается float.
  • Функция divmod(a, b) возвращает кортеж, содержащий результат целочисленного деления (a // b) и остаток от деления (a % b).

В Python 2 (без `from __future__ import division`):

  • Оператор / (обычное деление) выполняет целочисленное деление, если оба операнда являются целыми числами. Результат – целое число, полученное отбрасыванием дробной части. Если хотя бы один операнд - число с плавающей точкой, то выполняется обычное деление и результат - float.
  • Оператор // (целочисленное деление) ведет себя также, как оператор / в Python 3 (и Python 2.7 с импортом `from __future__ import division`).

Примеры (Python 3):

  • 10 / 2 вернет 5.0 (float)
  • 10 // 2 вернет 5 (int)
  • 10 / 3 вернет 3.3333333333333335 (float)
  • 10 // 3 вернет 3 (int)
  • 10.0 // 3 вернет 3.0 (float)
  • divmod(10, 3) вернет (3, 1) (кортеж)

Важно помнить об этом различии, чтобы избежать неожиданных результатов при делении целых чисел, особенно при портировании кода между Python 2 и Python 3.

0