fa
Feedback
Python: задачки и вопросы

Python: задачки и вопросы

رفتن به کانال در Telegram

Вопросы и задачки для подготовки к собеседованиям и прокачки навыков Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/media

نمایش بیشتر
7 127
مشترکین
+124 ساعت
اطلاعاتی وجود ندارد7 روز
-930 روز
آرشیو پست ها
Подробное объяснение 1️⃣ Выражение [0] * 3 создаёт список [0, 0, 0] — один объект в памяти. 2️⃣ Выражение [[0, 0, 0]] * 3 создаёт три ссылки на этот же объект, а не три независимых списка. 3️⃣ Переменная m содержит [[0,0,0] ref, [0,0,0] ref, [0,0,0] ref]. Все ref → один объект. 4️⃣ m[0][0] = 1 обращается к первой ссылке, находит тот же список и меняет его первый элемент. 5️⃣ Поскольку все три строки ссылаются на один список, изменение видно во всех строках. 6️⃣ Вывод: [[1, 0, 0], [1, 0, 0], [1, 0, 0]]. Почему это важно: Классический баг при создании игровых полей, таблиц и матриц. Чтобы сделать независимые строки, используйте list comprehension: [[0]*3 for _ in range(3)] — тогда каждая строка будет своим объектом.

Подробное объяснение: 1️⃣ Цикл for i in range(3) запускается: i принимает значения 0, 1, 2. 2️⃣ На итерации i = 0 условие if i == 1 ложно — цикл продолжается. 3️⃣ На итерации i = 1 условие истинно — выполняется break. 4️⃣ break немедленно прерывает цикл. 5️⃣ Блок else цикла проверяется только при нормальном завершении (без break). 6️⃣ Поскольку был break, блок else пропускается. 7️⃣ Выполняется print("done") → на экране одно слово: done. Почему это важно: Многие разработчики (даже опытные) думают, что else в цикле — это "если условие в цикле не сработало". На самом деле это "если цикл дошёл до конца". Путаница приводит к багам в поиске и валидации данных. for/else — полезный паттерн, но с контринтуитивным синтаксисом.

Подробное объяснение: 1️⃣ Python использует банковское округление (round half to even), а не привычное школьное «в большую сторону». 2️⃣ Когда число ровно посередине между двумя целыми, округляется к ближайшему чётному. 3️⃣ round(2.5) → 2 (ближайшее чётное). 4️⃣ round(3.5) → 4 (ближайшее чётное). 5️⃣ round(4.5) → 4 (ближайшее чётное). Почему это важно: В финансовых расчётах и при подсчёте статистики это может привести к расхождениям с ожидаемыми результатами. Стандарт IEEE 754 так округляет, чтобы уменьшить систематическую ошибку при большом количестве операций. Для точных десятичных вычислений (деньги, налоги) используйте Decimal из модуля decimal.

Подробное объяснение: 1️⃣Выражение (5) — это просто число 5 в скобках, как в математике. Тип остаётся int. 2️⃣Выражение (5,) — кортеж из одного элемента, запятая обязательна. 3️⃣Метод type(x).__name__ возвращает строку с именем класса. 4️⃣На экран выводится int tuple. Почему это важно Это типичная ошибка при возврате кортежа из функции (return (value) вместо return (value,)). Если забыть запятую, функция вернёт не коллекцию, а одиночное значение, что ломает распаковку и всю downstream-логику.

Любите хардкорные айтишные квизы? SourceCraft и Tproger выкатили залипательную браузерную игру-викторину для разработчиков. Р
Любите хардкорные айтишные квизы? SourceCraft и Tproger выкатили залипательную браузерную игру-викторину для разработчиков. Рутину написания кода перенесли в космический сеттинг: получилась планетарная система, где на каждой орбите спрятана инженерная загадка. Интерактивный квест с вопросами о космосе и реальными призами: https://tprg.ru/YQLj @quiz_python

Подробное объяснение: 1️⃣any(...) получает генератор, а значит элементы вычисляются по одному, а не все сразу. 2️⃣check(0) печатает 0 и возвращает False. 3️⃣check(1) печатает 1 и тоже возвращает False. 4️⃣check(2) печатает 2 и возвращает True, после чего any() сразу завершает работу. 5️⃣check(3) уже не вызывается, и итоговый вывод: 0 1 2 True. Почему это важно Это полезно для производительности и для контроля побочных эффектов. Если функция дорогая или что-то печатает, пишет в лог, делает запросы, короткое замыкание может сильно изменить поведение программы.

Что выведет код?
Anonymous voting

Автотесты, системная разработка, администрирование, работа с железом — Python используется везде, но задачи в этих направлени
Автотесты, системная разработка, администрирование, работа с железом — Python используется везде, но задачи в этих направлениях сильно отличаются Вместе с YADRO сделали квиз из 7 вопросов на основе реальных инженерных задач. Без правильных ответов — просто выбираете, что вам ближе по мышлению. На выходе — вердикт по вашему направлению (в том числе автоматизация на Python), описание задач, а также ориентиры по зарплатам на старте и дальше. Пройти квиз: https://tprg.ru/10FR

По шагам: 1️⃣Создаётся объект x класса AlwaysEqual. 2️⃣Выражение x == None вызывает метод x.__eq__(None), который всегда возвращает True. 3️⃣Выражение x is None не вызывает __eq__, а просто проверяет: это тот же самый объект, что и None, или нет. 4️⃣x — обычный экземпляр класса, а не объект None, поэтому результат False. 5️⃣На экран выводится True False. Почему это важно: Проверку на None нужно писать только через is None и is not None. Иначе перегруженный __eq__ может дать неожиданный результат и сломать логику условий.

Что выведет код?
Anonymous voting

Разбор задачи 1️⃣Вызов "".split(",") явно указывает, что нужно резать строку по запятым. Запятых нет, поэтому метод возвращает исходную строку целиком как один элемент: ['']. Длина списка = 1. 2️⃣Вызов "".split() (без аргументов) разбивает строку по любым пробельным символам (пробелы, табы, переносы строк). 3️⃣По спецификации Python, алгоритм .split() без аргументов сначала отбрасывает все пробелы по краям, а пустые строки полностью игнорирует. 4️⃣В результате для пустой (или состоящей только из пробелов) строки он возвращает пустой список []. Длина — 0. Почему это важно Это неочевидное различие регулярно приводит к падениям скриптов при парсинге логов или CSV-файлов. Если вы ожидаете получить список токенов, а получаете пустой список вместо [''], обращение по индексу (например, chars[0]) вызовет IndexError.

Что выведет код?
Anonymous voting