TGViewer
Python: задачки и вопросы Python: задачки и вопросы @quiz_python · 6.93K subscribers
Post #4597 876
Развёрнутое пояснение

1️⃣Python использует формулу: 𝚊 % 𝚋 = 𝚊 − 𝚋 × 𝚏𝚕𝚘𝚘𝚛(𝚊 / 𝚋), где 𝚏𝚕𝚘𝚘𝚛 — округление вниз (к минус бесконечности).

2️⃣Для −𝟽 % 𝟹: деление −𝟽 / 𝟹 = −𝟸.𝟹𝟹..., округление вниз 𝚏𝚕𝚘𝚘𝚛(−𝟸.𝟹𝟹) = −𝟹, остаток: −𝟽 − 𝟹 × (−𝟹) = 𝟸.

3️⃣В C, Java, JavaScript деление округляется к нулю, и там −𝟽 % 𝟹 = −𝟷.

Гвидо ван Россум намеренно выбрал округление вниз: при таком подходе остаток всегда попадает в диапазон [𝟶, 𝚗) при положительном делителе. Это удобно для вычисления номера клетки в сетке, индекса в кольцевом буфере, дня недели. Гвидо объяснял: если нужно округление к нулю, можно написать 𝚒𝚗𝚝(𝚊 / 𝚋), а вот получить «правильное» округление вниз из округления к нулю — сложнее, поэтому Python выбрал более полезный вариант по умолчанию.

Почему это важно
При портировании кода между языками или при работе с отрицательными координатами разница в поведении % может привести к трудноуловимым багам: один и тот же код даст разные результаты в Python и в C/Java.
  • ✍ 5
  • 🌚 1
More from @quiz_python
  1. Sep 21, 2026Развёрнутое пояснение: 1. make_handlers создаёт пустой список handlers. 2. Цикл дважды при…
  2. Sep 21, 2026Post #4880
  3. Sep 21, 2026Развёрнутое пояснение: 1. Вызывается persist_order, и блок try печатает строку write. 2. И…
  4. Sep 21, 2026Post #4878
  5. Sep 14, 2026А вы уже забрали свой подарок ко Дню программиста? Мы в Tproger вместе с нашими друзьями с…
  6. Aug 30, 2026Развёрнутое пояснение: 1. Создаётся список batch с двумя разными словарями. 2. Вызов enric…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →