es
Feedback
Python вопросы с собеседований

Python вопросы с собеседований

Ir al canal en Telegram

Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd

Mostrar más

📈 Análisis del canal de Telegram Python вопросы с собеседований

El canal Python вопросы с собеседований (@python_job_interview) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 24 973 suscriptores, ocupando la posición 5 489 en la categoría Tecnologías y Aplicaciones y el puesto 26 805 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 24 973 suscriptores.

Según los últimos datos del 04 junio, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -145, y en las últimas 24 horas de -13, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 6.29%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 3.00% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 1 570 visualizaciones. En el primer día suele acumular 750 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 8.
  • Intereses temáticos: El contenido se centra en temas clave como github, api, собеседование, git, docker.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 05 junio, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

24 973
Suscriptores
-1324 horas
-357 días
-14530 días
Archivo de publicaciones
⚡️ Как находить утечки памяти в Python с помощью tracemalloc Сохрани себе: для обнаружения утечек памяти в Python используй модуль tracemalloc. Этот инструмент поможет тебе быстро отследить, где происходит выделение памяти, и выявить проблемные участки кода.

import tracemalloc
def memory_leak():
    a = []
    for i in range(10000):
        a.append('leak' * 100)
tracemalloc.start()
memory_leak()
snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')
print("[Top 10 memory allocations]")
for stat in top_stats[:10]:
    print(stat)

🖥 Большинство “парсеров” умирают через 2 дня. Ты научишься делать те, которые живут в проде. Это не про BeautifulSoup ради г
🖥 Большинство “парсеров” умирают через 2 дня. Ты научишься делать те, которые живут в проде. Это не про BeautifulSoup ради галочки. Это про системы сбора данных, которые: • не падают от мелких правок на сайте • собирают данные в разы быстрее • обновляют всё сами по расписанию • обходят ограничения и баны • выглядят как сервис, а не хаос из файлов Ты начнёшь видеть сайты не как страницы, а как источники данных, к которым можно подключиться. В итоге ты сможешь: • забирать данные для своих проектов • автоматизировать чужую рутину • делать инструменты для аналитики • брать коммерческие заказы на сбор данных Это навык, который напрямую превращается в деньги. Не “знаю Python”, а умею добывать данные из интернета профессионально. 🎁 48 часов скидка 50% на Stepik: https://stepik.org/a/269942/

🖥 Python: Ты неправильно читаешь файлы Ты неправильно читаешь файлы в Python, если открываешь их без контекстного менеджера и сразу грузишь всё в память. Контекстный менеджер with гарантирует, что файл закроется даже при ошибке - без утечек дескрипторов и странных багов в проде. Читать весь файл через .read() удобно, но на больших логах и выгрузках ты просто съедаешь память. Правильнее - идти построчно: это быстро, экономно и идеально для обработки потоков данных. Буферизация тоже важна: можно явно задать buffering, чтобы ускорить чтение на медленных дисках или сетевых FS.

from pathlib import Path

path = Path("app.log")

with path.open("r", encoding="utf-8", buffering=1024 * 1024) as f:
for line in f:
line = line.strip()
if not line or line.startswith("#"):
continue
if "ERROR" in line:
print(line)

🔥Яндекс Образование приглашает студентов бакалавриата и специалитета IT-направлений со всей России на бесплатный студкемп по
🔥Яндекс Образование приглашает студентов бакалавриата и специалитета IT-направлений со всей России на бесплатный студкемп по аппаратной разработке умных устройств. Основные моменты: 🗓 Даты: с 13 по 24 апреля 📍 Место: Москва 💡 Формат: интенсивное офлайн-обучение В программе: - Полный цикл разработки умного устройства: от прототипа до готового продукта. - ML-интеграция в устройства с сохранением скорости и предсказуемости работы даже при ограниченных ресурсах. - Современные подходы к исследованиям и разработке умных устройств. Кто с вами будет работать? - Специалисты Яндекса, которые создавали Алису и другие умные устройства компании. - Преподаватели ФПМИ МФТИ, ФКН ВШЭ. - Эксперты ШАД. Участие бесплатное. Яндекс Образование покроет расходы на дорогу и проживание всем, кто пройдет отбор. Для участия нужно уметь работать с командной строкой и знать C++ или Java/Kotlin. 🔥 Набор открыт до 22 февраля, поэтому спешим регистрироваться по ссылке

🖥 Шпаргалка по тестированию функций на Python с использованием unittest Важно знать, что для эффективного тестирования кода можно использовать библиотеку unittest в Python. Это позволит вам автоматически проверять функциональность и находить ошибки. Вот пример простого теста для функции сложения:

import unittest
def add(a, b):
    return a + b
class TestAddFunction(unittest.TestCase):
    def test_add_positive(self):
        self.assertEqual(add(1, 2), 3)
    def test_add_negative(self):
        self.assertEqual(add(-1, 1), 0)
    def test_add_zero(self):
        self.assertEqual(add(0, 0), 0)
if __name__ == '__main__':
    unittest.main()

🔴 Реальный собес на Python от ТехЛида с опытом работы в Авито и Яндексе в прямом эфире 17 февраля(уже завтра!) в 19:00 по мс
🔴 Реальный собес на Python от ТехЛида с опытом работы в Авито и Яндексе в прямом эфире 17 февраля(уже завтра!) в 19:00 по мск приходи на прямой эфир с реальным собеседованием на Middle разработчика. Почему точно нужно прийти: 📂 Савва Демиденко, ТехЛид с опытом в Яндексе и Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Савва будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Савве Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot Реклама. О рекламодателе.

⚠️ ИИ вызывает новый дефицит памяти Дата-центры для AI потребляют столько памяти, что её начинает не хватать остальной электр
⚠️ ИИ вызывает новый дефицит памяти Дата-центры для AI потребляют столько памяти, что её начинает не хватать остальной электронике. Что происходит на рынке: - Контрактные цены на DRAM выросли на 75% всего за месяц - Поставщики пересматривают цены ежедневно - Основные объёмы памяти уходят в AI-серверы Главная причина - переход на HBM (High Bandwidth Memory). HBM - это многослойная память (8–12 слоёв DRAM), которая работает рядом с ускорителями Nvidia и AMD и обеспечивает экстремальную пропускную способность. Масштаб потребления: - Один ускоритель Nvidia Blackwell — до 192 GB HBM - Система NVL72 - 13.4 TB памяти Прогнозы: - Спрос на HBM вырастет на 70% в 2026 году - Уже сейчас HBM занимает 23% производства DRAM (против 19% в 2025) Что это значит для рынка: Обычной памяти становится меньше для: - смартфонов - ПК - автомобилей - игровых консолей Выигрывают производители: Samsung, SK Hynix, Micron - рост маржи. Проигрывают продуктовые команды и компании, которые не могут заранее выкупить поставки. Главный вывод: ИИ начинает влиять не только на софт и модели. Он уже перераспределяет физические ресурсы всей индустрии электроники.

🖥 Шпаргалка по регулярным выражениям в Python Сохрани себе полезную шпаргалку по регулярным выражениям в Python. Эти выражения позволяют эффективно находить и обрабатывать текстовые данные. Важно знать базовые функции и методы, чтобы упростить свою работу с текстом.

import re
# Пример текста

text = "Контакт: example@example.com, телефон: +7-123-456-7890"

# Регулярные выражения для извлечения email и телефона
email_pattern = r'\b[\w.-]+?@\w+?\.\w{2,4}\b'
phone_pattern = r'\+?\d{1,2}[- ]?\d{3}[- ]?\d{3}[- ]?\d{4}'

# Найти все совпадения
emails = re.findall(email_pattern, text)
phones = re.findall(phone_pattern, text)

# Результат
print("Найденные email:", emails)
print("Найденные телефоны:", phones)

🖥 Новый курс на Stepik - PostgreSQL для разработчиков: от основ к созданию API Здесь на пальцах объясняют не только как писа
🖥 Новый курс на Stepik - PostgreSQL для разработчиков: от основ к созданию API Здесь на пальцах объясняют не только как писать SQL-запросы, а строить настоящие backend-сервисы с базой данных как у профи. В этом курсе ты шаг за шагом создашь REST API на FastAPI + PostgreSQL: от установки среды и первых таблиц - до масштабируемого приложения с безопасностью и CRUD-операциями. 🔹 На практике разберете: • SQL-запросы, фильтры, агрегаты и подзапросы • Связи между таблицами и нормализацию БД • Взаимодействие Python и PostgreSQL • Реализацию REST API и подключение базы • Оптимизацию и разбор реальных задач с собеседований ⚡ После курса у вас будет свой работающий API-проект и реальные навыки работы с PostgreSQL в продакшене. 🎁 Торопись пока действует скидка в честь нвого года! 🚀 Прокачаю свои знания: https://stepik.org/course/255542/

Идеальный старт для проекта Django: конфигурация окружения. Сохрани себе идеальный шаблон virtual environment и основных настроек для каждого нового проекта Django. Это упростит процесс настройки окружения и позволит избежать распространенных ошибок.

# Создание виртуального окружения
python3 -m venv venv

# Активация виртуального окружения
source venv/bin/activate

# Установка основных зависимостей
pip install django djangorestframework psycopg2

# Создание файла requirements.txt
pip freeze > requirements.txt

# Инициализация нового проекта Django
django-admin startproject myproject
# Переход в директорию проекта
cd myproject

# Запуск сервера для проверки
python manage.py runserver

🐳 Как запустить DeepSeek у себя на ПК через Python Главная ошибка новичков - сразу ставить огромные модели. Начни с компактной версии, проверь, что всё запускается, и только потом увеличивай размер. Алгоритм простой: 1) ставим зависимости 2) качаем лёгкую модель DeepSeek 3) проверяем, что она отвечает 4) при необходимости включаем GPU или берём квантизованную версию Так ты избежишь вылетов, перегрузки памяти и быстрее получишь рабочий результат.

установить зависимости
pip install transformers accelerate torch sentencepiece

# пример запуска DeepSeek из Python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_name = "deepseek-ai/deepseek-coder-6.7b-base"

tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map="auto"   # если есть GPU — модель сама её использует
)

prompt = "Напиши на Python функцию, которая проверяет, простое ли число."

inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

outputs = model.generate(
    **inputs,
    max_new_tokens=160,
    temperature=0.4
)

print(tokenizer.decode(outputs[0], skip_special_tokens=True))

Repost from Machinelearning
⚡️ Cowork стал доступен на Windows. Пользователи Windows теперь могут использовать все возможности Cowork: прямой доступ к файлам, выполнение многошаговых задач, поддержку плагинов и всех коннекторов MCP. Ранее этот функционал был эксклюзивом для яблочной платформы. Попутно Anthropic представила гибкую систему инструкций. Вы можете задать глобальные предпочтения: тон, формат ответов или описание своей роли, они будут применяться ко всем чатам. Также появились инструкции уровня папок: они активируются автоматически, когда вы работаете в конкретной директории. Обновлять эти настройки можно прямо в ходе диалога, не копаясь в меню. Инструмент все еще в стадии research preview и открыт для всех пользователей платных тарифов. Для доступа достаточно скачать свежую версию клиента с сайта. @ai_machinelearning_big_data #news #ai #ml

🖥 Python: пакет packaging стал ощутимо быстрее — и это реально заметно в больших проектах Свежий апдейт библиотеки packaging
+1
🖥 Python: пакет packaging стал ощутимо быстрее — и это реально заметно в больших проектах Свежий апдейт библиотеки packaging (библиотека, которую используют pip и многие инструменты для сравнения версий и работы с зависимостями) принёс заметное ускорение ключевых операций. Это важно, потому что такие функции вызываются тысячи раз при установке зависимостей, разрешении версий и т.д. Главное, что ускорили: • Быстрее парсинг и сравнение версий (`Version` и `SpecifierSet`). • Некоторые операции (сравнения, фильтрации, хэши) стали в несколько раз быстрее. • Оптимизации направлены на самые “узкие места”, которые чаще всего тормозят pip и другие инструменты. Почему это важно для тебя: • pip будет работать быстрее при установке больших стеков зависимостей. • Инструменты сборки и CI/CD быстрее считают совместимость версий. • Оптимизация сделана без потери корректности и без усложнения API. В целом это пример, как базовая утилита в экосистеме Python может ускориться не из-за нового синтаксиса, а за счёт глубокого профилирования и целевых улучшений. Подробнее о скорости и измерениях — в исходном разборе изменений. https://iscinumpy.dev/post/packaging-faster/

🖥 АВТОКЛИКЕР НА PYTHON ЗА 30 СЕКУНД. Автокликер — одна из самых полезных мини-автоматизаций на Python. Он помогает убрать рутину: клики в интерфейсах, тестирование кнопок, автоматическое выполнение повторяющихся действий в браузере или приложениях. Главная идея — управлять мышью программно. Библиотека pyautogui позволяет: • кликать в нужной точке экрана • двигать курсор • задавать интервалы между действиями • быстро остановить скрипт при необходимости Такой подход часто используют для: • UI-тестирования • автоматизации веб-задач • игр и симуляторов • массовых операций в админках Важно: всегда добавляйте задержку перед запуском, чтобы успеть переключиться в нужное окно. И используйте паузы между кликами, чтобы не перегружать систему.

Установка:
pip install pyautogui

import pyautogui
import time

# Безопасность: переместите мышь в верхний левый угол, чтобы аварийно остановить
pyautogui.FAILSAFE = True

# Пауза перед стартом (5 секунд, чтобы открыть нужное окно)
print("Старт через 5 секунд...")
time.sleep(5)

# Координаты для клика (узнать можно через pyautogui.position())
x, y = 800, 500

# Количество кликов
clicks = 100

# Интервал между кликами (в секундах)
interval = 0.5

for i in range(clicks):
    pyautogui.click(x, y)
    print(f"Клик {i+1}")
    time.sleep(interval)

print("Готово!")
⚡️Max

🐍 Самая крутая фича Python 3.14 - `sys.remote_exec()` (объясняю по-человечески) Идея простая: ✅ у тебя уже запущено Python-приложение (например FastAPI в Docker/K8s) ✅ оно уже дошло до нужного состояния (в памяти есть переменные, сессии, кеши) ❌ но тебе нужно посмотреть “что внутри” или поставить дебаггер Раньше ты делал так: - добавлял debugpy в код - перезапускал приложение - заново воспроизводил баг Python 3.14 даёт новый чит-код: sys.remote_exec() позволяет выполнить кусок Python-кода ВНУТРИ уже работающего Python-процесса. То есть буквально “вколоть” скрипт в живой процесс. Это как: 🔹 зайти внутрь процесса 🔹 выполнить print(), импорт, запись переменных 🔹 или даже подключить дебаггер без рестарта вообще. Пример: что можно сделать через sys.remote_exec() Допустим у нас есть работающий процесс Python. 1) Мы хотим “добавить” туда код: - вывести PID - посмотреть глобальные переменные - записать лог - даже поменять значение переменной

# Этот код выполняется СНАРУЖИ и запускает инжект внутрь процесса
import sys

target_pid = 12345  # PID запущенного Python процесса

payload = r"""
import os
import time

print("✅ Injected into running process!")
print("PID:", os.getpid())
print("Time:", time.time())

# Пример: читаем что есть в глобальном пространстве
g = globals()
print("Globals keys sample:", list(g.keys())[:10])

# Пример: создаём переменную прямо в процессе
INJECTED_FLAG = True
"""

# Новое API Python 3.14
sys.remote_exec(target_pid, payload)
Пример 2: инжектим debugpy (дебаг без рестарта) Самая хайповая штука - можно подключить debugpy в уже живое приложение. То есть приложение уже крутится, у него есть состояние, и ты просто включаешь “прослушку” дебаггера на порту.

import sys

target_pid = 12345  # PID работающего uvicorn / fastapi процесса

payload = r"""
import debugpy

HOST = "0.0.0.0"
PORT = 5679

debugpy.listen((HOST, PORT))
print(f"🐞 debugpy is listening on {HOST}:{PORT}")

# если хочешь остановить выполнение и ждать пока подключишь IDE:
# debugpy.wait_for_client()
# print("✅ debugger attached!")
"""

sys.remote_exec(target_pid, payload)
Дальше: - ты делаешь port-forward (если Docker/K8s) - подключаешь VS Code / PyCharm / nvim к localhost:5679 - ставишь breakpoints и дебажишь как обычно Что важно 1) Это не “удалённое выполнение” как ssh. Это прям “внутри процесса” - доступ к памяти, переменным, импортам. 2) Это опасно для продакшена. Требует прав уровня SYS_PTRACE (можно читать/менять процессы) - поэтому только для локалки/стендов. 3) Это может стать стандартом для отладки контейнеров: - баг воспроизводится только в k8s - рестарт = баг пропал - а тут просто подключился и посмотрел https://www.youtube.com/watch?v=bYPFktmui4c

🔥 Полезная подборка каналов только код, практика и самые передовые инструменты, которые используют разработчики прямо сейчас
🔥 Полезная подборка каналов только код, практика и самые передовые инструменты, которые используют разработчики прямо сейчас.👇 🖥 ИИ: t.me/ai_machinelearning_big_data 🖥 Python: t.me/pythonl 🖥 Linux: t.me/linuxacademiya 🖥 C++ t.me/cpluspluc 🖥 Docker: t.me/DevopsDocker 🖥 Хакинг: t.me/linuxkalii 🖥 Devops: t.me/DevOPSitsec 👣 Golang: t.me/Golang_google 🖥 Аналитика: t.me/data_analysis_ml 🖥 Javascript: t.me/javascriptv 🖥 C#: t.me/csharp_ci 🖥 Java: t.me/javatg 🖥 Базы данных: t.me/sqlhub 👣 Rust: t.me/rust_code 🤖 Технологии: t.me/vistehno 💰 Экономика и инвестиции в ИИ t.me/financeStable 💼 Актуальные вакансии: t.me/addlist/_zyy_jQ_QUsyM2Vi 🖥 Chatgpt бот в тг: t.me/Chatgpturbobot 📚 Бесплатные ит-книги: https://t.me/addlist/HwywK4fErd8wYzQy 🖥Подборка по Golang: https://t.me/addlist/MUtJEeJSxeY2YTFi ⚡️ Лучшие ИИ ресурсы: https://t.me/addlist/2Ls-snqEeytkMDgy Самое лучшее в этом: ты учишься даже тогда, когда “нет времени, просто потому что читаешь правильную ленту.

🔥 КАК РАБОТАЕТ ВНИМАНИЕ (ATTENTION) В ТРАНСФОРМЕРАХ Механизм внимания - это способ для модели “смотреть” на разные слова в тексте и решать, какие из них сейчас важнее. Представь фразу: “Я положил ключи на стол, потому что он был рядом”. Слово “он” должно ссылаться на “стол”, а не на “ключи”. Внимание делает ровно это - для каждого слова вычисляет, на какие другие слова нужно опираться сильнее. Как это работает в одном абзаце: Для каждого токена модель строит три вектора - Query (что я ищу), Key (что я из себя представляю), Value (какую информацию несу). Считается “похожесть” Query к каждому Key - это оценки важности. Оценки нормализуются (softmax), чтобы получились веса от 0 до 1. Итоговое представление токена - это взвешенная сумма Value по всем токенам. То есть модель смешивает информацию из контекста, но делает это умно - больше веса тем словам, которые сейчас важны. Почему это суперсила: вместо того чтобы читать текст строго слева направо, модель может связывать дальние куски, находить нужные факты и строить смысловые зависимости. Именно поэтому трансформеры так хорошо работают с языком, кодом и длинным контекстом.

import numpy as np

def softmax(x: np.ndarray) -> np.ndarray:
    x = x - np.max(x)          # стабилизация
    e = np.exp(x)
    return e / np.sum(e)

# Допустим, у нас 3 токена в контексте.
# Для простоты возьмём маленькую размерность векторов (d=2).
# Query - "что я ищу"
# Key   - "что я такое"
# Value - "какую инфу несу"

Q = np.array([1.0, 0.5])  # Query для текущего токена (например, слово "он")

K = np.array([
    [1.0, 0.0],  # Key токена 1 (например, "ключи")
    [0.9, 0.1],  # Key токена 2 (например, "стол")
    [0.0, 1.0],  # Key токена 3 (например, "рядом")
])

V = np.array([
    [10.0, 0.0],  # Value токена 1
    [0.0, 10.0],  # Value токена 2
    [5.0, 5.0],   # Value токена 3
])

# 1) Считаем "похожесть" Q на каждый K через скалярное произведение
scores = K @ Q  # shape: (3,)
print("scores:", scores)

# 2) Нормализуем оценки -> получаем веса внимания
weights = softmax(scores)
print("attention weights:", weights)

# 3) Итоговый вектор = взвешенная сумма Value
output = weights @ V  # shape: (2,)
print("output (context mixed):", output)

# Интерпретация:
# Если вес токена 2 ("стол") самый большой, значит модель "смотрит" на него сильнее всего.

Рынок ИТ в 2026 сталжестче Работодатели ищут инженеров, которые умеют автоматизировать процессы, а не обслуживать их. Ваш ответ на вызов рынка — курс «Python для инженеров». Научитесь писать скрипты, чтобы: 🟢Ликвидировать ежедневную рутину 🟢Сосредоточиться на архитектуре и сложных задачах 🟢Стать специалистом, который экономит время и деньги компании 💡Инвестируйте в ключевое конкурентное преимущество 👉 CМОТРЕТЬ ПРОГРАММУ

🧩 Минималистичный код для Claude Nanocode — это компактная альтернатива Claude Code, реализованная в одном файле на Python б
🧩 Минималистичный код для Claude Nanocode — это компактная альтернатива Claude Code, реализованная в одном файле на Python без зависимостей. Он включает полный агентный цикл с использованием инструментов для работы с файлами и ведения истории беседы. 🚀Основные моменты: - Полный агентный цикл с использованием инструментов - Инструменты: read, write, edit, glob, grep, bash - Ведение истории беседы - Цветной вывод в терминале 📌 GitHub: https://github.com/1rgs/nanocode #python

Используй `pdb` вместо print для надежной отладки! Использование оператора `print` для отладки может привести к недоразумениям и пропущенным ошибкам, поскольку он не позволяет видеть контекст выполнения программы. Вместо этого используйте встроенные инструменты для отладки, такие как `pdb`, которые дают возможность устанавливать точки остановки, отслеживать выполнение и исследовать состояние переменных в реальном времени. Подписывайся, больше фишек каждый день !
import pdb
def calculate_factorial(n):
    if n < 0:
        raise ValueError("Negative values are not allowed")
    elif n == 0:
        return 1
    else:
        return n * calculate_factorial(n - 1)
def main():
    num = 5
    pdb.set_trace()  # Запускаем отладчик здесь
    result = calculate_factorial(num)
    print(f"Factorial of {num} is {result}")
if __name__ == "__main__":
    main()

  t.me/ai_machinelearning_big_data - наш телеграм канал с уроками