Зачем вообще нужен такой калькулятор?
Каждый день в российских СИЗО и колониях сотни тысяч человек задают себе один и тот же вопрос: «Сколько мне осталось?»
Учёт «отсидки», это не просто счёт дней, это:
- расчёт досрочного освобождения (УДО) по ст. 79 УК РФ;
- проверка компенсации за перерасчёт дней в СИЗО (1 день СИЗО = 1 день колонии общего режима, 1 день СИЗО = 1,5 дня колонии строгого режима);
- точный прогноз смены условий отбывания (перевод в колонию-поселение).
Какие данные вводить
Калькулятору нужно минимально 4 значения:
- Дата задержания/заключения под стражу — именно с неё начинается расчёт.
- Дата вступления приговора в законную силу — до этого дня «ходят» только дни СИЗО.
- Общий срок наказания по приговору в годах, месяцах и днях.
- Особенности режима (отметка «Общий», «Строгий», «Особый»), влияющие на коэффициенты.
Алгоритм расчёта «за 3 шага»
Шаг 1. Считаем дни в СИЗО
дни_СИЗО = дата_вступления_приговора ─ дата_задержания
Шаг 2. Применяем коэффициенты
| Тип режима | Коэф. |
|---|---|
| Колония-поселение | 1 : 3 (день = три дня) |
| Общий режим | 1 : 1 |
| Строгий режим | 1 : 1,5 |
| Особый режим | 1 : 1 |
Шаг 3. Вычисляем остаток
осталось = общий_срок ─ дни_СИЗО * коэф_СИЗО ─ отбитые_дни_в_колонии * коэф_колонии
Готовый скрипт на Python 3 (без сторонних библиотек)
from datetime import date, timedelta
def str_to_date(s):
d, m, y = map(int, s.split('.'))
return date(y, m, d)
zaderzh = str_to_date(input("Дата задержания (дд.мм.гггг): "))
vstupil = str_to_date(input("Дата вступления приговора: "))
srok_god = int(input("Годы приговора: "))
srok_mes = int(input("Месяцы приговора: "))
srok_dney = int(input("Дни приговора: "))
rezhim = input("Режим (общий, строгий, особый, поселение): ").lower
koef = {'общий': 1, 'строгий': 2/3, 'особый': 1, 'поселение': 3}
total = timedelta(days=srok_god365 + srok_mes30 + srok_dney)
sizo = (vstupil ― zaderzh).days
sizo_credit = sizo * koef['общий'] # в СИЗО всегда 1:1
otbyto = int(input("Сколько дней уже отбыл в колонии: "))
otbyto_credit = otbyto * koef.get(rezhim, 1)
ostatok = total.days ― sizo_credit ― otbyto_credit
print(f"Осталось отбыть: {ostatok} дн. (~{round(ostatok/30, 1)} мес.)")
Как запустить
- Сохраните код в файл otbytiy_srok.py.
- Откройте терминал (PowerShell, cmd, bash).
- Выполните:
python otbytiy_srok.py - Введите данные по подсказкам.
Кастомизация под себя
Добавить вычитание дней за УДО.
Дополнительно спрашивайте: «Сколько дней сократили за УДО?» и вычитайте эту величину из остатка.
Добавить праздничные дни.
Создайте список праздников и не включайте их в расчёт использованных дней, если вам дали «каникулы» по ст. 47 УИК РФ.
Короткий FAQ
Можно ли использовать он-лайн?
Да. Разместите этот скрипт в любом Python-облаке (Replit, PythonAnywhere) и добавьте простой веб-интерфейс на Flask за 10 строк кода.
Что делать, если назначен штраф вместо реального срока?
Данный калькулятор не применим — он только для лишения свободы.
Учитывает ли калькулятор пересыльные дни при этапировании?
Нет, поэтому при долгих пересылках (более 30 дней) вручную добавьте эти дни в «отбитые».
Скрипт занимает меньше 50 строк, но экономит часы ручных подсчётов и защищает от человеческого фактора.
Используйте его для самопроверки или как основу для более сложных юридических калькуляторов.