Математика в целых
Некоторое время назад мы занимались анализом одного алгоритма в целочисленной арифметике и в процессе работы потребовалось провести несложное моделирования для повторения результатов. В качестве инструмента был выбран привычный Python. Однако результаты слегка не совпали с теоретическими ожиданиями (у нас большие учёные используют как правило Matlab). Поиск проблемы привел к интересной находке.
Для затравки простой тестовый код на C, который примитивно считает среднее значение двух целых чисел:

Результат интуитивно ожидаем:
(5 + 6) / 2 = 5
(-5 + -6) / 2 = -5
(5 + -6) / 2 = 0
(-5 + 6) / 2 = 0
Однако код на Python выдал отличающийся результат. У нас использовался оператор //, примерно вот так:

И результаты:
5 + 6 // 2 = 5
-5 + -6 // 2 = -6
5 + -6 // 2 = -1
-5 + 6 // 2 = 0
Видно, что округление результата в C/C++ выполняется в сторону 0, формально просто отбрасывание дробной части, а вот в Python происходит округление в сторону -∞. То есть, в коде на Python применялась принципиально другая операция - floor division (деление с округлением вниз).
Внезапно.

Вывод: матчасть надо знать. И укреплять.
В качестве ссылок можно посмотреть на пункт 3.3.1 в учебнике по Python, где всё названо своими именами, и на PEP238, в котором описана мотивация такого поведения (так было не всегда).