
Python tests
@python_testit
Тесты и задания python разработчиков По всем вопросам- @notxxx1 @ai_machinelearning_big_data - машинное обучение @programming_books_it - бесплатные it книги @pythonl - 🐍 @ArtificialIntelligencedl - AI @datascienceiot -ds книги
Похожие каналы
Все →Последние посты

🖥 На stepik обновили курс Python в 2026 - рабочий инструмент для автоматизации, ботов, парсинга, API, данных и разработки с ИИ.Проблема новичков в том, что они учат Python кусками: синтаксис, пару задач, немного теории - и потом не понимают, как собрать из этого реальный проект.Этот курс закрывает именно этот разрыв. Здесь вы не просто смотрите уроки, а учитесь писать код, разбирать ошибки и собирать рабочие решения на практике.Внутри:- Python с нуля- много практики без сухой теории- реальные задачи и проекты- автоматизация рутины- работа с файлами, данными и API- понятная логика программирования- современная разработка с ИИ- отдельный блок по вайбкодингуВайбкодинг это нормальный навык 2026 года и вас научат- правильно ставить задачу, проверять код, понимать результат и быстрее доводить проект до рабочего состояния.48 часов скидка 60%: https://stepik.org/course/288218/

🐍 Python Pop Quiz: что окажется внутри `silly_dict`?Вопрос звучит просто, но тут ловушка в том, как Python работает с ключами словаря.Варианты:A) {"py": "amazing"} B) {"py": 10} C) {"py": "amazing", <__main__.MyClass object at ...>: 10} D) None of the aboveСуть в том, что ключи в dict сравниваются не по тому, как они выглядят в коде, а через __hash__ и __eq__.Если объект пользовательского класса имеет такой же хеш, как строка "py", и при сравнении считается равным этой строке, то Python решит: это один и тот же ключ.В таком случае новое значение просто перезапишет старое.Ответ: B) `{"py": 10}`Маленький пример, но отлично показывает важную вещь: в Python ключ словаря - это не “текстовое имя”, а объект с правилами хеширования и сравнения.




Что выведет код ? 📲Max

Python-баг, который выглядит безобидно… но ломает логику 👇fruits = ["apple", "lime", "orange", "pineapple", "orange"]for f in fruits: if f == "orange": fruits.remove(f)print(fruits)Ожидание: оба orange удалятся.Реальность: один orange остаётся.Почему так происходит?Ты изменяешь список во время итерации.После удаления элементы сдвигаются, и цикл пропускает следующий элемент.Это классический сценарий продакшн-багов:• код выглядит правильно• тесты могут пройти• но данные обрабатываются неправильноПравильный вариант:fruits = [f for f in fruits if f != "orange"]Мораль:Изменяешь коллекцию во время обхода -Deploy first. Pray later.#junior #python@pythonl

Что выведет код в Python 3?

#практика

🧠 Python-задача с собеседования: найди ошибкуКод должен посчитать количество чисел больше среднего значения в списке.def count_above_avg(nums, avg=sum(nums)/len(nums)): count = 0 for n in nums: if n > avg: count += 1 return countdata1 = [1, 2, 3, 4, 5]data2 = [10, 20, 30]print(count_above_avg(data1))print(count_above_avg(data2))Проблема в этой строке:```pythondef count_above_avg(nums, avg=sum(nums)/len(nums)):```Здесь используется значение по умолчанию, которое вычисляется один раз — в момент определения функции, а не при каждом её вызове.Что происходит по шагам:Когда Python читает определение функции, он сразу считает:sum(nums)/len(nums)Но nums в этот момент - это первый переданный список, то есть data1.Значение avg фиксируется и больше не меняется.При вызове:• count_above_avg(data2)• среднее значение не пересчитывается, используется старое — от data1.Поэтому логика ломается, функция работает с неверным средним.📌 Это известная ловушка PythonЗначения аргументов по умолчанию вычисляются один раз.Это та же причина, почему списки и словари в дефолтных параметрах часто приводят к багам.🛠 Правильное решениеНужно вычислять среднее внутри функции, а не в параметрах:```pythondef count_above_avg(nums, avg=None): if avg is None: avg = sum(nums) / len(nums) return sum(1 for n in nums if n > avg)```Теперь среднее будет считаться заново при каждом вызове.💡 Главное правилоНикогда не используй вычисляемые или изменяемые объекты как значения по умолчанию:❌ def f(x, lst=[])❌ def f(x, avg=sum(x)/len(x))✅ Используй None и считай внутри функции.