Второй инструмент: целые числа вместо дробей
В задании 7 объёмы делятся на 8 и на 1024. Если использовать обычное деление /, результат становится дробным, и в нём копится погрешность (если эти операции не последние). Обычное деление // даёт целое, округляя вниз. А когда нужно вверх — поделить нацело и добавить единицу, если остался остаток. Проверяй остаток (операция %) и прибавляй 1, если он больше нуля.
Микропаттерн «Держи всё в битах и целых». Переводи в биты в самом начале, считай целыми, переводи в Кбайт в самом конце. Если деление последняя операция (ты переводишь результатв Кбайты или Мбайты), можешь вывести и результат обычного деления, но в ответ всегда целое число - округли в нужную сторону!