Python: задачки и вопросы
6.9K subscribers
1.35K photos
1 video
1 file
127 links
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбор по шагам

1️⃣Список services содержит три строки: "api/v2", "db" и "auth".

2️⃣Выражение "api" in services проверяет, есть ли в списке элемент, равный строке "api".

3️⃣Строка "api/v2" начинается с "api", но целиком ей не равна. Строки "db" и "auth" тоже не совпадают с искомым значением.

4️⃣Подходящего элемента нет, поэтому результат проверки — False. Именно его выводит print.

Почему это важно
В списке разрешённых сервисов или имён файлов in ищет совпадение с целым элементом. Если нужна проверка начала имени сервиса, это условие задают явно: any(s.startswith("api/") for s in services) найдёт в этом списке "api/v2".
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Типичный программист
🧑‍💻 Какие навыки помогают вам в разработке в 2026 году?

Что вы чаще используете в работе? В каких задачах помогает ИИ, а где проще справиться самостоятельно?

Мы решили собрать портрет современного разработчика — и приглашаем вас поделиться своим опытом. Расскажите, какие навыки вам пригодились и как вы используете ИИ. Если обходите его стороной, нам тоже интересно узнать почему.

Опрос анонимный и займёт около 5 минут. Результаты опубликуем в общем большом исследовании.

👉 Пройти опрос
Please open Telegram to view this post
VIEW IN TELEGRAM
Разберём два выражения

1️⃣Объект p принадлежит классу Price. Метод __repr__ возвращает строку DEBUG, а __format__ — PUBLIC.

2️⃣В выражении f"{p}" Python вызывает p.__format__(""). Пустая строка означает, что после двоеточия не задан формат. Наш метод возвращает PUBLIC.

3️⃣В выражении f"{p!r}" сначала вызывается repr(p). Получается строка DEBUG, после чего форматирование применяется уже к этой строке. Метод Price.__format__ здесь не вызывается.

4️⃣Оба результата передаются в print, который разделяет их пробелом. Итоговый вывод: PUBLIC DEBUG.

Почему это важно
Класс может по-разному представлять объект в отчёте и при отладке. Например, __format__ выводит цену с валютой, а __repr__ показывает данные для диагностики. Добавление !r меняет путь преобразования, поэтому его нельзя считать просто декоративной пометкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбор по шагам

1️⃣В span записана длительность 25 часов и 30 секунд. Это 1 сутки, 1 час и 30 секунд.

2️⃣Объект timedelta хранит длительность в днях, секундах и микросекундах. Здесь span.days равен 1, а span.seconds содержит оставшиеся после выделения полных суток секунды: 3600 + 30 = 3630.

3️⃣Метод total_seconds() учитывает всю длительность вместе с днями: 25 × 3600 + 30 = 90030. Он возвращает число с плавающей точкой — 90030.0.

4️⃣Поэтому print выводит 3630 90030.0.

Почему это важно
Для расчёта времени работы сервиса, таймаута или длительности задания используйте total_seconds(). Если взять только seconds, полные сутки не попадут в расчёт: в этом примере из длительности потеряются 24 часа.
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему разработчик планирует отдавать больше задач Claude

Винсент Шмальбах описал план перераспределить расходы на ИИ: больше работы отдавать Claude, а Codex сохранить для части задач.

К решению его подтолкнули затяжные сессии. По наблюдениям автора, агент иногда часами продолжал проверки и добавлял соседние задачи. Квота расходовалась, а момент, когда можно принять результат и двигаться дальше, было трудно предсказать.

В личном разборе Шмальбах связывает эти эпизоды с условиями подписки и затратами на собственные проекты.

#ии #инструменты

🐸 Библиотека ИИ для айтишников
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Порядок вывода

1️⃣В ids два идентификатора: a и b. В states только один статус: ok. Вызов zip создаёт итератор, который будет получать элементы по мере обхода.

2️⃣При первом шаге цикла элементы есть в обоих списках. zip выдаёт пару a и ok, тело цикла выполняется и печатает a ok.

3️⃣На следующем шаге в ids ещё есть b, а states уже закончился. Из-за strict=True возникает ValueError. Вторую пару zip не выдаёт, тело цикла для b не выполняется.

4️⃣Исключение перехватывает блок except, который печатает mismatch. Получаются две строки: a ok, затем mismatch.

Почему это важно
Строгий режим помогает обнаружить несовпадение числа записей, но не проверяет весь вход заранее. Если тело цикла сохраняет данные или отправляет запросы, часть работы может быть выполнена до ошибки. Для готовых списков можно отдельно проверить длины до начала обработки.
Please open Telegram to view this post
VIEW IN TELEGRAM
✍1