Python

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

Целочисленное деление в Python записывается через //. Оно возвращает целую часть результата с округлением вниз. Рядом часто используют оператор %, который возвращает остаток от деления

Эта пара нужна в задачах про страницы, партии, время, индексы, группы и проверку делимости

Базовый пример

print(17 // 5)
print(17 % 5)

Вывод:

3
2

17 // 5 дает 3 полные группы по 5

17 % 5 дает остаток 2

Связь такая:

17 = 5 * 3 + 2

Обычное деление и целочисленное деление

print(17 / 5)
print(17 // 5)

Вывод:

3.4
3

/ возвращает обычный результат деления

// возвращает целый результат с округлением вниз

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

Страницы и товары

Допустим, на странице показывается 10 товаров, всего товаров 53. Нужно понять, сколько полных страниц получится и сколько товаров останется

total_items = 53
per_page = 10

full_pages = total_items // per_page
rest = total_items % per_page

print(full_pages)
print(rest)

Вывод:

5
3

Если нужно количество страниц для показа всех товаров, включая неполную последнюю страницу:

total_items = 53
per_page = 10

pages = (total_items + per_page - 1) // per_page
print(pages)

Результат будет 6

По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы

По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы

Время: минуты в часы и минуты

total_minutes = 135

hours = total_minutes // 60
minutes = total_minutes % 60

print(f'{hours} ч {minutes} мин')

Вывод:

2 ч 15 мин

Такой прием легко переносится на секунды, дни, недели и другие единицы

divmod вместо двух операций

Python умеет сразу возвращать частное и остаток через divmod()

hours, minutes = divmod(135, 60)
print(hours)
print(minutes)

Вывод:

2
15

divmod(a, b) возвращает то же, что пара a // b и a % b

Проверка делимости

Остаток помогает понять, делится ли число без остатка

number = 24

if number % 3 == 0:
    print('делится на 3')
else:
    print('не делится на 3')

Для четности:

number = 17

if number % 2 == 0:
    print('четное')
else:
    print('нечетное')

Отрицательные числа

Главная неожиданность: // округляет вниз, а не просто отбрасывает дробную часть

print(17 // 5)
print(-17 // 5)

Вывод:

3
-4

-17 / 5 равно -3.4, а округление вниз ведет к -4

Если нужно просто отбросить дробную часть к нулю, используйте int(a / b), но делайте это осознанно

print(int(-17 / 5))

Вывод:

-3

Деление на ноль

print(10 // 0)

Такой код вызовет ZeroDivisionError

В рабочем коде делитель нужно проверять:

total = 10
group_size = 0

if group_size == 0:
    print('размер группы не может быть нулем')
else:
    print(total // group_size)

Частые ошибки

  • путать / и //
  • забывать, что // округляет вниз
  • не проверять отрицательные числа
  • считать страницы через total // per_page и терять неполную последнюю страницу
  • забывать про деление на ноль
  • не использовать %, когда нужен остаток
  • писать две операции вместо divmod(), когда нужны и частное, и остаток

Практика

Сделайте четыре упражнения

  1. Переведите 3672 секунды в часы, минуты и секунды
  2. Посчитайте количество страниц для 127 товаров по 20 товаров на странице
  3. Проверьте, является ли число 438 четным
  4. Сравните -17 // 5 и int(-17 / 5)

Что читать дальше

Для продолжения рядом подойдет материал Остаток от деления в Python

Если нужны нюансы с отрицательными числами, посмотрите Целочисленное деление в Python: отрицательные числа и остаток

// возвращает целочисленное частное, % возвращает остаток, а divmod() возвращает оба значения сразу

Для положительных чисел поведение обычно интуитивно. Для отрицательных важно помнить: // округляет вниз, поэтому результат может отличаться от простого отбрасывания дробной части

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x