Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam

Пикабу Игры +1000 бесплатных онлайн игр

Начните с маленькой подводной лодки: устанавливайте бомбы, избавляйтесь от врагов и старайтесь не попадаться на глаза своим плавучим врагам. Вас ждет еще несколько игровых вселенных, много уникальных сюжетов и интересных загадок.

Пикабомбер

Аркады, Пиксельная, 2D

Играть
Погрузись в мир куриных перестрелок! Хватай пушку и пусть только перья останутся на месте твоих врагов!

Чикен Страйк

Шутер, Экшены, Для мальчиков

Играть
Знакомьтесь, онлайн-головоломка «Шарики и Блоки», которая увлечет вас надолго! Правила предельно просты: с помощью шариков вам нужно уничтожить все кирпичи. С каждым уровнем рисунок из кирпичей становится все сложнее, а азарт возрастает на максимум! Играть в кирпичики онлайн можно бесплатно и без регистрации.

Шарики и Блоки

Аркады, Шарики, Казуальные

Играть
Бросьте себе вызов в этой классической японской онлайн-игре. Цель — заполнить все пустые клетки цифрами от 1 до 9, которые не повторяются в каждой из 9 строк, столбцов и блоков. Играть в Судоку можно с телефона или ПК без регистрации.

Магия Судоку

Головоломки, Казуальные, Судоку

Играть
 Что обсуждали люди в 2024 году? Самое время вспомнить — через виммельбух Пикабу «Спрятано в 2024»! Печенька облегчит поиск предметов.

Спрятано в 2024

Поиск предметов, Казуальные

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • alekseyJHL alekseyJHL 6 постов
  • XpyMy XpyMy 1 пост
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

Python3

984 поста сначала свежее
7
hypo69
hypo69
4 месяца назад
Программирование на python
Серия Вопросы собеседований - разработчик python 1 - 100

101 игра на python. Вопросы собеседований. 51 - 60⁠⁠

Вопросы 👉 1 - 10
Вопросы 👉 11 - 20
Вопросы 👉 21 - 30
Вопросы 👉 31 - 40
Вопросы 👉 41 - 50


Вопросы

Вопрос 51.
Какова цель функции dir() в Python, особенно при изучении свойств и методов объектов во время выполнения?

  • A. Функция dir() используется для установки направления выполнения в сложных приложениях, определяя управление потоком на основе зависимостей модуля.

  • B. Она динамически изменяет доступность методов и свойств в объектах для управления видимостью из внешних модулей.

  • C. Эта функция выводит список всех атрибутов и методов любого объекта, предоставляя быстрый способ понять, какие операции может выполнять объект, что полезно для отладки и разработки.

  • D. Функция dir() шифрует имена всех методов и атрибутов в объекте, чтобы защитить код от интроспекции и несанкционированного доступа.

Вопрос 52.
Как оператор continue в Python влияет на поток управления внутри циклов, и каково его типичное применение?

  • A. Оператор continue вызывает немедленное завершение текущей итерации и принудительно завершает цикл, обычно используемый для остановки чрезмерной обработки во вложенных циклах.

  • B. Он пропускает остальную часть кода внутри цикла для текущей итерации и возвращается к условию цикла или следующей итерации, обычно используется для пропуска части цикла при выполнении условия.

  • C. Оператор continue в Python удваивает скорость итерации, пропуская проверку выполнения на каждом шаге цикла.

  • D. Оператор позволяет циклу пропустить все предстоящие итерации и возобновить выполнение с точки, непосредственно следующей за структурой цикла.

Вопрос 53.
Каково влияние использования оператора del на структуры данных Python и как это влияет на управление памятью и поведение программы?

  • A. Оператор del используется для удаления переменных или элементов из структур данных, что немедленно освобождает всю память, связанную с этими элементами, повышая эффективность программы.

  • B. Он помечает элементы для удаления и планирует сборщик мусора для их удаления во время следующего простоя системы, сводя к минимуму влияние на производительность программы.

  • C. Оператор del Python переименовывает переменные и элементы структуры данных, делая их недоступными под их исходными идентификаторами в качестве меры безопасности.

  • D. Оператор del удаляет ссылки на объекты, что потенциально приводит к сборке мусора, если все ссылки удалены, тем самым освобождая память.

Вопрос 54.
В Python, каково назначение и эффект использования оператора break в циклических конструкциях?

  • A. Оператор break используется внутри циклов для немедленного выхода из всей структуры цикла, полностью завершая выполнение цикла при его вызове.

  • B. Он заставляет цикл приостановить выполнение и ожидать ввода пользователя перед продолжением следующей итерации.

  • C. Оператор break в Python удваивает скорость выполнения цикла, разделяя цикл на параллельные задачи с момента вызова.

  • D. Оператор отправляет сигнал прерывания во внешние системы, указывая, что в цикле достигнут предел обработки данных.

Вопрос 55.
Учитывая следующий фрагмент кода Python, каково ожидаемое поведение программы?

101 игра на python. Вопросы собеседований. 51 - 60 Собеседование, Питон, Python, Вопрос, Программирование, Длиннопост
  • A. Программа печатает числа от 0 до 4 без прерывания.

  • B. Она печатает числа от 0 до 2, а затем останавливается перед печатью 3.

  • C. Программа выдает ошибку, потому что оператор break неправильно используется вне цикла.

  • D. Она непрерывно печатает число 3 в бесконечном цикле.

Вопрос 57.
В программировании на Python для чего используется ключевое слово global?

  • A. Чтобы объявить, что переменная внутри функции является глобальной и изменяет переменную на уровне модуля.

  • B. Чтобы повысить видимость переменной в разных модулях, импортированных в скрипт.

  • C. Чтобы защитить переменную внутри функции от изменения внешними функциями.

  • D. Чтобы объявить переменную, к которой можно получить доступ в любом месте программы, независимо от области видимости.

Вопрос 58.
Что вычисляет ключевое слово in в Python в контексте контейнеров данных, таких как списки или строки?

  • A. Оно проверяет, существует ли файл в каталоге.

  • B. Оно подтверждает, содержится ли указанный элемент в итерируемом объекте или последовательности справа от оператора.

  • C. Оно используется исключительно внутри циклов для итерации по каждому элементу последовательности.

  • D. Оно изменяет элементы внутри контейнера данных для обеспечения целостности данных.

Вопрос 59.
Какую встроенную функцию Python вы бы использовали, чтобы найти наибольшее число в списке целых чисел?

  • A. max()

  • B. sum()

  • C. len()

  • D. high()

Вопрос 60.
Каково основное назначение оператора assert в Python?

  • A. Определить начальное состояние переменных в начале программы.

  • B. Прервать выполнение программы, если не выполнено указанное условие.

  • C. Гарантировать, что условие в коде остается истинным, вызывая AssertionError, если условие оказывается ложным.

  • D. Зашифровать конфиденциальные данные в приложении для предотвращения утечки данных.


Ответы

51, Правильный ответ: C

Объяснение:

Функция dir() в Python - это встроенная функция, предназначенная для интроспекции, то есть для изучения внутренней структуры объектов во время выполнения программы.

  • Вариант A не верен: dir() не устанавливает направление выполнения кода.

  • Вариант B не верен: dir() не изменяет доступность методов или свойств объекта.

  • Вариант C верен: dir() возвращает список всех атрибутов и методов объекта. Это делает ее полезной для изучения и отладки.

  • Вариант D не верен: dir() не шифрует данные, а помогает их увидеть.

Как работает dir():

  • dir() принимает в качестве аргумента объект (например, строку, число, список, класс, модуль или даже пользовательский объект).

  • Она возвращает отсортированный список строк, представляющих все атрибуты и методы объекта, включая встроенные, унаследованные и собственные.

  • Этот список позволяет проанализировать доступные свойства и методы объекта.

Применение dir():

  • Отладка: При отладке кода dir() позволяет изучить свойства объекта и понять, какие методы и атрибуты доступны.

  • Изучение библиотек: dir() позволяет изучить содержимое модулей и библиотек, чтобы узнать, какие функции и классы они предоставляют.

  • Исследование объектов: dir() позволяет анализировать пользовательские объекты, чтобы понять, какие у них есть атрибуты и методы.

Пример:

101 игра на python. Вопросы собеседований. 51 - 60 Собеседование, Питон, Python, Вопрос, Программирование, Длиннопост

В результате:

  • В примере видно, что dir(my_list) возвращает список всех атрибутов и методов списка, включая как магические методы __add__, так и пользовательские методы append и sort.

  • dir(my_string) возвращает список атрибутов и методов для объекта строки.

Таким образом, вариант C является верным, так как точно описывает функцию dir() и ее применение в отладке и разработке.

52, Правильный ответ: B

Объяснение:

Оператор continue в Python используется внутри циклов (for и while) для пропуска текущей итерации и перехода к следующей.

  • Вариант A не верен: continue не завершает цикл, а только текущую итерацию.

  • Вариант B верен: continue пропускает оставшийся код в текущей итерации цикла и переходит к следующей.

  • Вариант C не верен: continue не удваивает скорость выполнения циклов.

  • Вариант D не верен: continue переходит к следующей итерации текущего цикла, а не к концу цикла.

Как работает continue:

  1. Когда Python встречает оператор continue внутри цикла, он немедленно переходит к следующей итерации цикла, игнорируя любой код, расположенный после continue в текущей итерации.

  2. В цикле for это означает переход к следующему элементу в последовательности.

  3. В цикле while это означает повторную проверку условия цикла.

Типичные применения continue:

  1. Пропуск итераций: Пропуск итерации на основе определенного условия.

  2. Фильтрация данных: Игнорирование определенных элементов последовательности в цикле.

  3. Обработка исключительных ситуаций: Игнорирование текущей итерации, когда возникает ошибка, и переход к следующей.

Пример:

101 игра на python. Вопросы собеседований. 51 - 60 Собеседование, Питон, Python, Вопрос, Программирование, Длиннопост

В результате:

  • В примере с циклом for выводятся только нечетные числа из списка, поскольку четные пропускаются.

  • В примере с циклом while выводятся все числа, за исключением тех, что делятся на 3.

Таким образом, вариант B является верным.

53, Правильный ответ: D

Объяснение:

Оператор del в Python используется для удаления ссылок на объекты или элементы из структур данных. Важно понимать, что del не гарантирует немедленного освобождения памяти, поскольку Python использует автоматическое управление памятью.

  • Вариант A не верен: Оператор del удаляет ссылки, а не саму память немедленно.

  • Вариант B не верен: Сборщик мусора Python не имеет расписания.

  • Вариант C не верен: del не переименовывает переменные.

  • Вариант D верен: del удаляет ссылки на объекты, и если объект больше не имеет ссылок, то он становится кандидатом на сборку мусора.

Как работает del:

  1. Удаление ссылки: Оператор del удаляет ссылку на объект из текущей области видимости.

  2. Уменьшение счетчика ссылок: При удалении ссылки, счетчик ссылок объекта уменьшается.

  3. Сборка мусора: Если счетчик ссылок объекта становится равен нулю (то есть, нет других ссылок на этот объект), объект помечается как недостижимый и становится кандидатом на сборку мусора (Garbage Collection - GC).

  4. Освобождение памяти: Сборщик мусора (GC) освобождает память, занимаемую объектом, в автоматическом режиме.

Влияние на управление памятью и поведение программы:

  • del не гарантирует немедленного освобождения памяти. Сборка мусора выполняется автоматически Python, когда это необходимо.

  • Если удаляется последняя ссылка на объект, то он становится кандидатом на сборку мусора.

  • del используется для управления ссылками на объекты, но не самим объектом, и может помочь высвободить память в долгоживущих программах.

Примеры:

101 игра на python. Вопросы собеседований. 51 - 60 Собеседование, Питон, Python, Вопрос, Программирование, Длиннопост

В результате:

  • del my_list[0] удаляет элемент из списка по индексу, сдвигая остальные элементы.

  • После del my_list ссылка my_list удалена, но данные всё ещё доступны через ссылку my_list_2

Таким образом, вариант D является правильным.

Правильный ответ: A

Объяснение:

Оператор break в Python используется для немедленного выхода из цикла, в котором он находится.

  • Вариант A верен: break завершает выполнение цикла полностью, независимо от оставшихся итераций.

  • Вариант B не верен: break не приостанавливает выполнение и не ждет ввода пользователя.

  • Вариант C не верен: break не удваивает скорость выполнения циклов.

  • Вариант D не верен: break не отправляет сигналы во внешние системы.

Как работает break:

  1. Когда Python встречает оператор break внутри цикла (for или while), цикл немедленно прерывается.

  2. Управление передается на первый оператор, следующий за циклом.

  3. Все оставшиеся итерации цикла пропускаются.

Использование break:

  1. Ранний выход: Когда необходимо выйти из цикла до его полного завершения при выполнении определенного условия.

  2. Поиск элементов: При поиске элемента в списке можно использовать break для завершения цикла, как только элемент найден.

  3. Управление бесконечными циклами: break может использоваться для выхода из бесконечного цикла (while True) при наступлении определенного условия.

Пример:

101 игра на python. Вопросы собеседований. 51 - 60 Собеседование, Питон, Python, Вопрос, Программирование, Длиннопост

В результате:

  • В цикле for выводится только числа до тех пор, пока не встретится число больше 5, после чего цикл завершается.

  • В цикле while True цикл прерывается, когда x становится больше 5.

Таким образом, вариант A является правильным, так как он точно описывает функцию оператора break.

55, Правильный ответ: B

Объяснение:

В данном коде используется цикл for и оператор break. Давайте разберем работу кода по шагам.

  1. Цикл for: for i in range(5): - Этот цикл итерируется по числам в диапазоне от 0 до 4 включительно (range(5) создает последовательность 0, 1, 2, 3, 4).

  2. Условие: if i == 3: - на каждой итерации проверяется, равно ли текущее значение переменной цикла i числу 3.

  3. Оператор break: Если условие i == 3 выполняется, то вызывается оператор break, который немедленно завершает цикл.

  4. Вывод: print(i) - выводится значение переменной i перед проверкой условия.

  • Вариант A не верен: Цикл не будет выполняться до конца, так как есть оператор break.

  • Вариант B верен: Цикл будет итерироваться с 0 по 4, но при i == 3 цикл прервется, поэтому будут выведены значения от 0 до 2 включительно.

  • Вариант C не верен: Оператор break используется корректно внутри цикла.

  • Вариант D не верен: Цикл не будет бесконечным, так как break прекращает его выполнение.

Пример:

101 игра на python. Вопросы собеседований. 51 - 60 Собеседование, Питон, Python, Вопрос, Программирование, Длиннопост

В результате:

Цикл начнет итерации с i = 0. Будут выведены числа 0, 1, 2. Когда i станет равно 3, выполнится break, и цикл завершится, а число 3 выведено не будет.

Таким образом, вариант B является правильным ответом.

56, Правильный ответ: A

Объяснение:

В Python списки (list) и кортежи (tuple) являются последовательностями, но они отличаются по своей мутабельности (изменяемости).

  • Вариант A верен: Списки являются изменяемыми (mutable), а кортежи — неизменяемыми (immutable).

  • Вариант B не верен: И списки и кортежи могут хранить элементы различных типов.

  • Вариант C не верен: И списки и кортежи можно перебирать.

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

Подробное объяснение:

  • Списки (list):

    • Мутабельность: Списки являются изменяемыми, то есть после их создания можно добавлять, удалять или изменять элементы в списке.

    • Синтаксис: Списки создаются с использованием квадратных скобок [].

    • Применение: Используются для хранения динамических коллекций элементов, где нужно изменять порядок, добавлять или удалять элементы.

  • Кортежи (tuple):

    • Неизменяемость: Кортежи являются неизменяемыми, то есть после их создания нельзя добавлять, удалять или изменять элементы.

    • Синтаксис: Кортежи создаются с использованием круглых скобок ().

    • Применение: Используются для представления фиксированных коллекций элементов, где не требуется изменение содержимого (например, координаты, записи). Кортежи могут быть использованы как ключи словаря, чего нельзя сделать со списками.

Пример:

101 игра на python. Вопросы собеседований. 51 - 60 Собеседование, Питон, Python, Вопрос, Программирование, Длиннопост

В результате:

  • Списки можно изменять (мутировать) как мы и сделали в примере, добавив и изменив элемент.

  • Кортежи после создания нельзя изменить.

Таким образом, вариант A является правильным, так как точно отражает основное различие между списками и кортежами в Python.

57, Правильный ответ: A

Объяснение:

Ключевое слово global в Python используется внутри функции для того, чтобы указать, что переменная, которая используется в функции, является глобальной переменной, объявленной на уровне модуля, а не локальной переменной внутри функции.

  • Вариант A верен: Именно global позволяет функции модифицировать глобальную переменную, объявленную на уровне модуля.

  • Вариант B не верен: Для использования переменной в разных модулях, нужно использовать import.

  • Вариант C не верен: global не защищает от изменения переменной внутри функции, а наоборот, позволяет ее изменять.

  • Вариант D не верен: global объявляет переменную глобальной только внутри функции, а не делает ее автоматически доступной из любой точки кода, в первую очередь используется для изменения переменных, объявленных на уровне модуля.

Как работает global:

  1. Глобальная область видимости: Переменные, объявленные вне функций, находятся в глобальной области видимости.

  2. Локальная область видимости: По умолчанию, переменные, определенные внутри функции, являются локальными, то есть существуют и доступны только внутри этой функции.

  3. Изменение глобальных переменных: Чтобы изменить глобальную переменную внутри функции, нужно использовать ключевое слово global, чтобы явно указать, что вы работаете с глобальной переменной, а не создаете новую локальную.

Пример:

101 игра на python. Вопросы собеседований. 51 - 60 Собеседование, Питон, Python, Вопрос, Программирование, Длиннопост

В результате:

  • Переменная global_var объявляется глобальной на уровне модуля.

  • В функции modify_global() при объявлении global global_var Python понимает, что нужно изменять значение переменной, объявленной на уровне модуля.

  • И значения global_var меняются, что видно при выводе. Таким образом, вариант A является правильным ответом.

58, Правильный ответ: B

Объяснение:

Ключевое слово in в Python используется для проверки наличия элемента в итерируемом объекте (списке, кортеже, строке, словаре и т.д.).

  • Вариант A не верен: in не проверяет наличие файлов.

  • Вариант B верен: Оператор in проверяет, присутствует ли элемент в итерируемом объекте справа от него.

  • Вариант C не верен: Хотя in часто используется в циклах for, это не его единственное применение.

  • Вариант D не верен: Оператор in не изменяет элементы в контейнере.

Как работает оператор in:

  1. in принимает два операнда:

    • левый операнд - это элемент, который проверяется на наличие

    • правый операнд - это итерируемый объект, в котором выполняется поиск.

  2. Возвращает True, если левый операнд найден в правом, в противном случае возвращает False.

  3. Работает со списками, кортежами, строками, словарями и множествами.

  4. Для словарей проверяет наличие ключа, а не значения.

  5. Для строк проверяет наличие подстроки.

Примеры:

101 игра на python. Вопросы собеседований. 51 - 60 Собеседование, Питон, Python, Вопрос, Программирование, Длиннопост

В результате:

  • Оператор in проверяет, есть ли заданный элемент в итерируемом объекте.

  • Для списка проверяется наличие элемента в списке.

  • Для строк проверяется наличие подстроки.

  • Для словарей проверяется наличие ключа, а не значения.

Таким образом, вариант B является верным ответом.

59, Правильный ответ: A

Объяснение:

В Python для поиска наибольшего значения в последовательности (например, списке, кортеже, строке, множестве или другом итерируемом объекте) используется встроенная функция max().

  • Вариант A верен: max() возвращает наибольший элемент в итерируемом объекте.

  • Вариант B не верен: sum() возвращает сумму всех элементов.

  • Вариант C не верен: len() возвращает длину (количество элементов) последовательности.

  • Вариант D не верен: high() не является встроенной функцией Python.

Как работает max():

  1. max() принимает итерируемый объект в качестве аргумента (или несколько аргументов).

  2. Он возвращает наибольший элемент в итерируемом объекте (или наибольшее значение среди переданных аргументов).

  3. Для итерируемых объектов он сравнивает элементы, используя оператор > по умолчанию, но можно передать свою функцию для сравнения.

Пример:

101 игра на python. Вопросы собеседований. 51 - 60 Собеседование, Питон, Python, Вопрос, Программирование, Длиннопост

В результате:

  • max(my_numbers) возвращает наибольшее число из списка my_numbers.

  • max(5, 10, 2, 15) возвращает наибольшее из переданных чисел.

Таким образом, вариант A является правильным ответом.

60, Правильный ответ: C

Объяснение:

Оператор assert в Python - это инструмент для отладки и тестирования, который позволяет проверить истинность определенного условия.

  • Вариант A не верен: assert не используется для определения начального состояния переменных.

  • Вариант B не верен: assert не просто прерывает выполнение, он делает это, если условие ложно и выводит AssertionError.

  • Вариант C верен: assert гарантирует, что условие, которое должно выполняться на определенном этапе, остается верным, и вызывает ошибку если нет.

  • Вариант D не верен: assert не связан с шифрованием данных.

Как работает оператор assert:

  1. assert принимает на вход условие (логическое выражение), которое проверяется на истинность.

  2. Если условие истинно (True), то программа продолжает выполняться в штатном режиме.

  3. Если условие ложно (False), то Python генерирует исключение AssertionError , и выполнение программы останавливается.

  4. Можно передать опциональное сообщение, которое будет выведено вместе с исключением.

Цель использования assert:

  • Отладка: Используется как средство отладки, позволяющее быстро выявить ошибки в логике программы.

  • Тестирование: Помогает гарантировать, что код работает правильно, путем добавления проверок в ключевых местах.

  • Обнаружение ошибок на ранних этапах: Позволяет обнаружить проблемы, связанные с некорректным состоянием данных или логикой работы, на ранних этапах разработки.

Пример:

101 игра на python. Вопросы собеседований. 51 - 60 Собеседование, Питон, Python, Вопрос, Программирование, Длиннопост

В результате:

  • В первом вызове, когда скидка находится в допустимом пределе, программа продолжает выполняться нормально.

  • Во втором вызове, discount больше 1, и условие 0 <= discount <= 1 не выполняется, что приводит к выбросу AssertionError.

Таким образом, вариант C является правильным.


Продолжение следует... Подпишись, чтобы не пропустить.

Удачи!

Показать полностью 11
[моё] Собеседование Питон Python Вопрос Программирование Длиннопост
2
9
PythonGet
PythonGet
4 месяца назад
Программирование на python
Серия Python_get

Counter: как подсчитать всех котов в доме и не сойти с ума⁠⁠

Представьте, что у вас дома живёт несколько котов, и вы хотите узнать, сколько раз каждый из них мяукнул за день. Вы можете записывать это вручную, но зачем, если Python уже придумал для вас инструмент? Встречайте Counter из модуля collections — ваш личный счётчик всего, что угодно.

Сегодня мы разберёмся, как работает Counter, зачем он нужен и как его использовать для подсчёта чего угодно: от котов до символов в строке.

О чём речь?

Counter — это специальный класс из модуля collections, который позволяет легко подсчитывать элементы в коллекциях. Это как если бы у вас был кот, который сам записывает, сколько раз он мяукнул, а потом приносит вам отчёт.

Как это работает?

Counter принимает на вход любую итерируемую коллекцию (список, строку, кортеж и т.д.) и возвращает словарь, где ключи — это элементы коллекции, а значения — их количество.

Пример:

Counter: как подсчитать всех котов в доме и не сойти с ума Программирование, Обучение, Python, Counter-strike, Подсчет, Кот, Длиннопост

Counter автоматически подсчитал, сколько раз каждый кот встречается в списке.

Примеры использования

1. Подсчёт символов в строке

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

Counter: как подсчитать всех котов в доме и не сойти с ума Программирование, Обучение, Python, Counter-strike, Подсчет, Кот, Длиннопост

Counter подсчитал количество каждой буквы в имени.

2. Подсчёт слов в тексте

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

Counter: как подсчитать всех котов в доме и не сойти с ума Программирование, Обучение, Python, Counter-strike, Подсчет, Кот, Длиннопост

Теперь вы знаете, что слово "loves" встречается три раза.

3. Нахождение самых частых элементов

Вы можете использовать метод most_common(), чтобы найти самые частые элементы.

Counter: как подсчитать всех котов в доме и не сойти с ума Программирование, Обучение, Python, Counter-strike, Подсчет, Кот, Длиннопост

most_common(1) возвращает самый частый элемент.

4. Увеличение и уменьшение счётчиков

Вы можете вручную увеличивать или уменьшать значения в Counter.

Counter: как подсчитать всех котов в доме и не сойти с ума Программирование, Обучение, Python, Counter-strike, Подсчет, Кот, Длиннопост

Теперь у Барсика 3 очка, а у Мурзика 0.

5. Операции с Counter

Вы можете складывать, вычитать, пересекать и объединять Counter.

Counter: как подсчитать всех котов в доме и не сойти с ума Программирование, Обучение, Python, Counter-strike, Подсчет, Кот, Длиннопост

Эти операции позволяют легко работать с несколькими счётчиками.

Когда использовать?

🐾 Используйте Counter, если:

- Вам нужно подсчитать элементы в коллекции.

- Вы хотите найти самые частые элементы.

- Вы работаете с текстами, списками или любыми другими итерируемыми объектами.

🐾 Не используйте Counter, если:

- Вам нужно хранить уникальные элементы (используйте set).

- Вы работаете с большими данными и хотите минимизировать использование памяти.

Плюсы и минусы

🐾 Плюсы:

✅ Удобен для подсчёта элементов.

✅ Поддерживает полезные методы (most_common, операции с Counter).

✅ Прост в использовании.

🐾 Минусы:

❌ Может занимать много памяти, если коллекция большая.

❌ Не подходит для хранения уникальных элементов.

Как не запутаться?

1. 🐾 Используйте Counter, если вам нужно подсчитать элементы.

2. 🐾 Экспериментируйте с методами most_common, +, -, &, |.

3. 🐾 Не забывайте, что Counter возвращает 0 для отсутствующих ключей.

Поделись в комментариях, что бы вам было интересно узнать ещё?

А на канале https://t.me/pytonism ловите новую задачу 😉

Показать полностью 6
[моё] Программирование Обучение Python Counter-strike Подсчет Кот Длиннопост
0
3
Paragoz
Paragoz
4 месяца назад
про всё в IT SPB

Python установлен⁠⁠

Python установлен Программирование, Программист, Linux, Python, IT юмор, Компьютер, Кобры
Показать полностью 1
Программирование Программист Linux Python IT юмор Компьютер Кобры
7
6
hypo69
hypo69
4 месяца назад
Программирование на python
Серия Вопросы собеседований - разработчик python 1 - 100

101 игра на python. Вопросы собеседований. 41 - 50⁠⁠

Вопросы 👉 1 - 10

Вопросы 👉 11 - 20

Вопросы 👉 21 - 30

Вопросы 👉 31 - 40


Вопрос 41.

Какова основная цель и функциональность декоратора @staticmethod в классах Python, и как он влияет на взаимодействие метода с атрибутами класса и экземпляра?

  • A. Декоратор @staticmethod преобразует метод в метод только для класса, который может изменять только атрибуты класса и не может получать доступ или изменять данные, специфичные для экземпляра.

  • B. Он позволяет вызывать метод у экземпляра класса или непосредственно из самого класса без необходимости ссылки на класс или экземпляр, делая метод более похожим на простую функцию, которая не работает с объектом.

  • C. Этот декоратор автоматически оптимизирует метод для работы в параллельных потоках, улучшая производительность для высоконагруженных функций внутри классов.

  • D. Декоратор @staticmethod ограничивает метод возможностью вызова только во время создания объекта класса, в первую очередь используется для инициализации статических атрибутов класса.


Вопрос 42.

Учитывая значительные особенности типа данных "список" в Python, каковы последствия использования списков для операций, включающих частое вставление и удаление элементов, особенно в начале списка?

  • A. Списки оптимизированы для быстрого доступа к фиксированной позиции, что делает их идеальными для приложений, требующих частого вставления и удаления в любой позиции, включая начало.

  • B. Списки Python реализованы как массивы, а это означает, что вставки и удаления в начале списка могут быть медленными, поскольку они требуют сдвига всех последующих элементов в памяти.

  • C. Тип данных "список" автоматически сортирует свои элементы для поддержания порядка после каждой вставки или удаления, что значительно повышает производительность при частом добавлении или удалении элементов.

  • D. Списки в Python — это связанные списки, гарантирующие, что вставка или удаление элементов в любой позиции, включая начало, выполняется стабильно быстро.


Вопрос 43.

Как оператор with в Python повышает читаемость кода и управление ресурсами, особенно в контексте обработки файлов и других ресурсоемких операций?

  • A. Оператор with ограничивает блок выполнения доступом только к внешним ресурсам, гарантируя, что все ресурсоемкие операции будут централизованы.

  • B. Он автоматически управляет открытием и закрытием ресурсов, гарантируя, что они будут правильно освобождены после выполнения блока кода, что упрощает обработку ошибок и управление ресурсами.

  • C. Этот оператор действует как цикл, который непрерывно проверяет наличие ошибок в блоке кода, предотвращая сбои программы из-за необработанных исключений.

  • D. Оператор with ускоряет выполнение кода внутри своего блока, оптимизируя использование памяти и циклы ЦП.


Вопрос 44.

В Python, как функция zip облегчает обработку нескольких итерируемых объектов, и каков ее типичный случай использования в задачах манипулирования и агрегации данных?

  • A. Функция zip объединяет несколько списков в один список кортежей, где каждый кортеж содержит элементы из всех списков по определенному индексу, оптимизируя использование памяти за счет сжатия данных.

  • B. Она итерирует по нескольким итерируемым объектам одновременно, возвращая итератор кортежей, где каждый кортеж содержит элементы итерируемых объектов с тем же индексом, что полезно для параллельной обработки данных.

  • C. Функция zip в Python шифрует данные из нескольких итерируемых объектов для защиты их содержимого перед обработкой, в основном используется в приложениях, работающих с конфиденциальными данными.

  • D. Эта функция транслирует наименьший итерируемый объект в более крупные, автоматически заполняя пропущенные значения для синхронизации.


Вопрос 45.

Каково назначение и типичное применение оператора assert в Python, особенно в контексте отладки и разработки более надежного кода?

  • A. Оператор assert в Python в основном используется для определения главной функции программы, гарантируя, что она является первой частью исполняемого кода.

  • B. Он используется для проверки корректности условий в программе; если условие истинно, программа продолжается, но если ложно, программа выдает AssertionError, помогая в отладке.

  • C. Python использует оператор assert для шифрования утверждений в коде, предотвращая несанкционированный доступ к отладочным выражениям и конфиденциальным проверкам.

  • D. Оператор assert служит инструментом документирования, который автоматически генерирует руководства пользователя на основе утверждений, определенных во всем коде.


Вопрос 46.

Какова функциональность функции super() в Python, особенно в контексте объектно-ориентированного программирования и иерархий наследования?

  • A. Функция super() используется для возврата прокси-объекта, который делегирует вызовы методов родительскому или братскому классу, позволяя получить доступ к унаследованным методам, которые могли быть переопределены в классе.

  • B. Она служит механизмом для обхода переопределения методов в подклассах, гарантируя, что метод из родительского класса не может быть переопределен ни в каких классах-потомках.

  • C. Python использует super(), чтобы автоматически обнаруживать и вызывать конструктор базового класса, независимо от того, какой метод или атрибут используется.

  • D. Функция инициализирует все переменные в родительском классе значениями по умолчанию, независимо от того, как они были инициализированы в подклассе.


Вопрос 48.

В Python, какова роль переменной __name__, и как она используется обычно в скриптах и модулях?

  • A. Переменная __name__ используется для определения имени класса объекта, позволяя динамически ссылаться на тип класса во всем приложении.

  • B. Это встроенная переменная, которая содержит имя модуля, в котором она используется; если модуль запускается как основная программа, то он содержит строку "__main__".

  • C. Эта переменная действует как идентификатор для адресов памяти, помогая в прямом управлении местоположением объектов внутри приложений Python.

  • D. __name__ — это инструмент отладки Python, который выводит путь выполнения текущей функции, помогая в трассировке и ведении журнала.


Вопрос 49.

Как Python управляет памятью, особенно в отношении создания и уничтожения объектов?

  • A. Python использует модель ручного управления памятью, где разработчики должны явно выделять и освобождать память, используя системные вызовы.

  • B. Он реализует автоматизированную систему с использованием комбинации подсчета ссылок и сборщика мусора для управления памятью, которая динамически управляет выделением и освобождением объектов.

  • C. Управление памятью в Python осуществляется посредством обязательного файлового обмена, где данные временно хранятся на диске во время выполнения.

  • D. Python позволяет программистам настраивать алгоритм выделения памяти в режиме реального времени, оптимизируя производительность для определенных типов структур данных.


Вопрос 50.

Каковы последствия использования оператора import в скриптах Python, особенно при управлении зависимостями и модульном программировании?

  • A. Оператор import увеличивает время выполнения скриптов, загружая все доступные библиотечные модули в начале, независимо от того, используются ли они в скрипте.

  • B. Он позволяет программистам получать доступ к коду из других модулей или библиотек в своих программах, способствуя повторному использованию кода и модульному программированию.

  • C. Используя import, Python компилирует каждый импортированный модуль в отдельный байт-код, чтобы предотвратить перекомпиляцию при будущих выполнениях, снижая гибкость.

  • D. Оператор используется для шифрования и защиты кода модулей для предотвращения несанкционированного доступа и изменения кодовой базы.



Ответы:

41, Правильный ответ: B

Объяснение:

Декоратор @staticmethod в Python используется для определения методов, которые логически связаны с классом, но не требуют доступа к данным конкретного экземпляра или самого класса.

  • Вариант A не верен: Статические методы не могут изменять атрибуты класса напрямую, как это делают методы класса.

  • Вариант B верен: @staticmethod позволяет вызывать метод как у экземпляра, так и у класса, он не привязан к конкретному экземпляру класса, поэтому не требует аргумента self или cls.

  • Вариант C не верен: @staticmethod не оптимизирует метод для работы в параллельных потоках.

  • Вариант D не верен: @staticmethod не ограничивает вызов метода только во время создания объекта.

Основные характеристики статических методов:

  1. Нет доступа к экземпляру: Статические методы не принимают неявный первый аргумент self, как это делают методы экземпляра. Они не имеют доступа к данным конкретного экземпляра класса.

  2. Нет доступа к классу: Статические методы также не принимают cls в качестве первого аргумента, что означает, что они не могут напрямую обращаться к атрибутам класса.

  3. Работают как обычные функции: Статические методы похожи на обычные функции, но они определены внутри класса и связаны с ним логически.

  4. Вызываются без объекта: Статический метод может вызываться как у экземпляра объекта (instance.method()), так и непосредственно у самого класса (ClassName.method()).

  5. Используются для утилит: Обычно статические методы используются для создания утилитных функций, связанных с классом, но не требующих доступа к конкретным данным экземпляра или класса.

Пример:

101 игра на python. Вопросы собеседований. 41 - 50 Гайд, Программирование, Python, Собеседование, Junior, Длиннопост

В результате:

  • add_numbers не требует доступа к экземпляру класса, поэтому может быть вызван как у класса, так и у экземпляра.

  • modify_class_variable модифицирует атрибут класса class_var.

Таким образом, вариант B является правильным ответом.


42, Правильный ответ: B

Объяснение:

В Python списки реализованы как динамические массивы. Это означает, что они предоставляют быстрый доступ к элементам по индексу, но операции вставки и удаления элементов в начале списка могут быть медленными.

  • Вариант A не верен: Списки не оптимизированы для быстрых вставок и удалений в начале списка.

  • Вариант B верен: Вставка или удаление элементов в начале списка требует сдвига всех последующих элементов в памяти, что является медленной операцией для больших списков.

  • Вариант C не верен: Списки не сортируют элементы после вставок или удалений. Сортировку нужно делать явно.

  • Вариант D не верен: Списки в Python не являются связанными списками.

Почему вставка и удаление в начале списка медленные:

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

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

Производительность операций:

  • Доступ по индексу: O(1) – постоянное время, не зависит от размера списка.

  • Вставка/удаление в конце списка: O(1) – вставка или удаление последнего элемента не требует сдвигов.

  • Вставка/удаление в начале/середине списка: O(n) – время выполнения зависит от количества элементов в списке, потому что нужно сдвигать все последующие элементы.

  • Поиск элемента по значению: O(n) - время выполнения зависит от количества элементов, нужно последовательно перебирать все элементы пока не найдется нужный.

Пример:

101 игра на python. Вопросы собеседований. 41 - 50 Гайд, Программирование, Python, Собеседование, Junior, Длиннопост

43, Правильный ответ: B

Объяснение:

Оператор with в Python предназначен для упрощения управления ресурсами, такими как файлы, сетевые соединения и другие ресурсоемкие операции. Он использует так называемые менеджеры контекста, которые гарантируют, что ресурсы будут правильно освобождены после их использования, даже если во время работы с ними возникли исключения.

  • Вариант A не верен: with не ограничивает доступ к внешним ресурсам, а помогает их корректно использовать.

  • Вариант B верен: with гарантирует, что ресурсы будут правильно закрыты, что упрощает управление и обработку ошибок.

  • Вариант C не верен: with не является циклом проверки ошибок и не предотвращает сбои программы.

  • Вариант D не верен: with не влияет на скорость выполнения, его основная цель - управлять ресурсами.

Как работает with:

  1. Вход в контекст: Когда выполняется оператор with, вызывается метод __enter__ менеджера контекста. Обычно этот метод подготавливает ресурс (например, открывает файл).

  2. Выполнение кода: Выполняется блок кода, находящийся внутри with.

  3. Выход из контекста: После выполнения блока кода вызывается метод __exit__ менеджера контекста, гарантируя корректное закрытие или освобождение ресурса, даже если в блоке try возникло исключение.

Преимущества использования with:

  • Автоматическое управление ресурсами: with автоматически закрывает файлы, освобождает соединения, и т.д. после использования, что снижает риск утечки ресурсов.

  • Чистый код: with делает код более чистым, так как он явно указывает, где ресурс используется и управляется.

  • Безопасность: Он обеспечивает корректное освобождение ресурсов даже в случае возникновения ошибок, что делает код более надежным.

  • Улучшение читаемости: with явно показывает границы работы с ресурсом, что улучшает читаемость кода.

Пример:

101 игра на python. Вопросы собеседований. 41 - 50 Гайд, Программирование, Python, Собеседование, Junior, Длиннопост

В результате:

  • Файл my_file.txt откроется автоматически при входе в блок with.

  • После выполнения кода внутри блока with, файл закроется автоматически (даже если возникнет исключение).

  • Если файла не существует, то обработается исключение FileNotFoundError, если произойдет любая другая ошибка, то сработает общее исключение Exception.

Таким образом, вариант B является правильным.


44, Правильный ответ: B

Объяснение:

Функция zip() в Python - это мощный инструмент для агрегации данных из нескольких итерируемых объектов. Она позволяет параллельно итерировать по этим объектам и создавать последовательность кортежей, где каждый кортеж содержит элементы из соответствующих позиций в каждом итерируемом объекте.

  • Вариант A не верен: zip не объединяет в один список, а создает итератор кортежей. Также она не занимается сжатием данных.

  • Вариант B верен: zip действительно итерирует по нескольким итерируемым объектам одновременно, возвращая итератор кортежей.

  • Вариант C не верен: zip не шифрует данные.

  • Вариант D не верен: zip не дополняет списки до одной длины. Итерирование прекращается, когда один из итерируемых объектов закончится.

Как работает zip():

  1. zip() принимает на вход несколько итерируемых объектов (списки, кортежи, строки и др.).

  2. Он возвращает итератор, который производит кортежи.

  3. Каждый кортеж содержит элементы с одинаковыми индексами из соответствующих итерируемых объектов.

  4. Итерация продолжается до тех пор, пока не закончится самый короткий итерируемый объект.

Типичные случаи использования zip():

  1. Параллельная обработка данных: zip() позволяет обрабатывать данные из нескольких списков, кортежей или других итерируемых объектов одновременно.

  2. Создание словарей: zip() может использоваться для создания словарей из пар ключей и значений.

  3. Транспонирование матриц: zip() может быть использована для транспонирования матриц, меняя местами строки и столбцы.

Пример:

101 игра на python. Вопросы собеседований. 41 - 50 Гайд, Программирование, Python, Собеседование, Junior, Длиннопост

В результате:

  • Первый пример объединяет списки имен и оценок в список кортежей.

  • Второй пример создаёт словарь с именами в качестве ключей и оценками в качестве значений.

Таким образом, вариант B является верным, точно описывая функцию zip() и ее применение.


45, Правильный ответ: B

Объяснение:

Оператор assert в Python является инструментом для отладки, который используется для проверки корректности условий во время выполнения программы.

  • Вариант A не верен: assert не определяет главную функцию программы.

  • Вариант B верен: assert проверяет условие и если оно ложно, то выводит исключение AssertionError, помогая в отладке.

  • Вариант C не верен: assert не шифрует код.

  • Вариант D не верен: assert не генерирует документацию.

Как работает assert:

  1. assert принимает в качестве аргумента условие, которое должно быть истинным.

  2. Если условие истинно (возвращает True), программа продолжает выполнение без каких-либо действий.

  3. Если условие ложно (возвращает False), Python вызывает исключение AssertionError. Это прерывает выполнение программы и выводит сообщение об ошибке, которое можно использовать для отладки.

Когда использовать assert:

  • Проверка предположений: Используйте assert для проверки предположений о состоянии вашей программы, которые должны быть верными. Например, если вы ожидаете, что переменная всегда должна быть положительной, добавьте assert variable > 0.

  • Отладка: Используйте assert как инструмент для выявления ошибок на ранних этапах разработки. Это помогает быстро находить и исправлять логические ошибки.

  • Контракты: В некоторых случаях assert можно использовать для проверки контрактов между функциями и модулями, гарантируя правильное использование API.

Пример:

101 игра на python. Вопросы собеседований. 41 - 50 Гайд, Программирование, Python, Собеседование, Junior, Длиннопост

В результате:

  • При вызове calculate_area(5, 10), оба assert условия выполняются, и программа продолжает работу и выводит "Площадь: 50".

  • При вызове calculate_area(-5, 10), первое assert условие не выполняется, и выводится ошибка AssertionError: Ширина должна быть положительной.

Таким образом, вариант B является правильным, поскольку он точно описывает роль assert в проверке условий и отладке.


46, Правильный ответ: A

Объяснение:

Функция super() в Python является важным инструментом в объектно-ориентированном программировании, особенно при работе с иерархией классов и множественным наследованием.

  • Вариант A верен: super() создает прокси-объект, который перенаправляет вызовы методов к родительскому классу.

  • Вариант B не верен: super() не обходит переопределение методов, а наоборот, используется для вызова переопределенных методов родительского класса.

  • Вариант C не верен: super() не используется для автоматического вызова конструктора базового класса, это вызывается при наследовании через вызов super().__init__()

  • Вариант D не верен: super() не инициализирует переменные в родительском классе значениями по умолчанию, а вызывает методы базового класса.

Как работает super():

  1. Доступ к родительскому классу: super() позволяет подклассу вызывать методы родительского класса. Это особенно полезно, когда подкласс переопределяет метод родителя, но при этом нужно выполнить оригинальную версию родительского метода.

  2. Множественное наследование: В случае множественного наследования, super() помогает управлять вызовами методов в правильном порядке (Method Resolution Order - MRO).

  3. Инициализация родительского класса: Часто используется в конструкторах __init__(), чтобы вызвать конструктор родительского класса и выполнить его инициализацию.

Пример:

101 игра на python. Вопросы собеседований. 41 - 50 Гайд, Программирование, Python, Собеседование, Junior, Длиннопост

В результате:

  • super().__init__(name) в дочернем классе позволяет вызвать метод __init__() из родительского класса.

  • super().speak() в дочернем классе вызывает метод speak из родительского класса, а затем печатает что то своё.

Таким образом, вариант A является правильным ответом.


47, Правильный ответ: B

Объяснение:

Лямбда-функции в Python - это анонимные функции, то есть функции без имени. Они определяются с помощью ключевого слова lambda и используются для создания простых функций "на лету" в одну строку.

  • Вариант A не верен: Лямбда-функции не предназначены для постоянного использования и имеют ограниченные возможности по сравнению с обычными функциями, созданными с помощью def.

  • Вариант B верен: Лямбда-функции - это анонимные функции, определяемые в одну строку, и они обычно используются, когда нужна простая функция для кратковременного использования (например, при передаче в map(), filter(), sort()).

  • Вариант C не верен: Лямбда-функции не управляют памятью автоматически. Они работают так же, как обычные функции с точки зрения управления памятью.

  • Вариант D не верен: Лямбда-функции не связаны с управлением глобальными переменными.

Ключевые характеристики лямбда-функций:

  1. Анонимность: Лямбда-функции не имеют имени, в отличие от обычных функций, определенных с помощью def.

  2. Компактность: Они записываются в одну строку и могут содержать только одно выражение.

  3. Область применения: Лямбда-функции часто используются в качестве аргументов для функций высшего порядка, таких как map(), filter(), sorted() и т.д., где нужно передать простую функцию для обработки данных.

  4. Ограничения: Лямбда-функции не могут содержать множественные выражения или сложные конструкции, например циклы и условные операторы.

Пример:

101 игра на python. Вопросы собеседований. 41 - 50 Гайд, Программирование, Python, Собеседование, Junior, Длиннопост

В результате:

  • Лямбда-функция используется для возведения в квадрат каждого элемента списка numbers с помощью map().

  • Лямбда-функция используется для фильтрации четных чисел из списка numbers c помощью filter().

  • Лямбда-функция используется для сортировки списка кортежей points по второму элементу.

Таким образом, вариант B является правильным ответом.


48, Правильный ответ: B

Объяснение:

Переменная __name__ — это специальная встроенная переменная в Python, которая автоматически устанавливается интерпретатором Python. Она используется для определения того, запущен ли модуль как основной скрипт или импортируется в другой модуль.

  • Вариант A не верен: __name__ не связана с именами классов или динамической типизацией.

  • Вариант B верен: Когда модуль запускается как основная программа, Python устанавливает __name__ в "__main__". Если модуль импортируется в другой скрипт, __name__ устанавливается в имя модуля.

  • Вариант C не верен: __name__ не связана с управлением адресами памяти.

  • Вариант D не верен: __name__ не предназначена для отладки, а для определения контекста запуска модуля.

Как используется __name__:

Часто используется для определения, является ли скрипт основным исполняемым файлом или импортирован как модуль. Это позволяет выполнять определенный код, например вызывать функцию main(), только если скрипт запущен напрямую.

Пример:

101 игра на python. Вопросы собеседований. 41 - 50 Гайд, Программирование, Python, Собеседование, Junior, Длиннопост

В результате:

  1. Если запустить my_module.py непосредственно:

    • print(f"Имя модуля: {__name__}") выведет Имя модуля: __main__.

    • Условие if __name__ == "__main__": будет выполнено, так как модуль запущен напрямую.

    • Выведет "Этот код выполняется, если скрипт запущен напрямую." и "Вызов my_function".

  2. Если запустить main.py:

    • print(f"Имя модуля: {__name__}") выведет Имя модуля из main.py: __main__ (так как main.py является основным скриптом).

    • print(f"Имя модуля: {__name__}") в my_module.py выведет Имя модуля: my_module, так как модуль my_module был импортирован в main.py.

    • my_module.my_function() выведет "Вызов my_function"

Таким образом, вариант B является правильным ответом.


49, Правильный ответ: B

Объяснение:

Python использует автоматическое управление памятью, которое включает в себя два основных механизма:

  1. Подсчет ссылок: Python автоматически отслеживает количество ссылок на каждый объект в памяти. Когда количество ссылок на объект падает до нуля, объект считается неиспользуемым и готов к удалению.

  2. Сборщик мусора: Python также имеет сборщик мусора, который периодически запускается и находит объекты, на которые больше нет ссылок (например, циклические ссылки, которые подсчет ссылок не может обнаружить), и освобождает занимаемую ими память.

  • Вариант A не верен: Python не использует ручное управление памятью, как в C или C++.

  • Вариант B верен: Python действительно использует автоматизированную систему с подсчетом ссылок и сборщиком мусора.

  • Вариант C не верен: Python не использует файловый обмен для управления памятью.

  • Вариант D не верен: Python не позволяет программистам настраивать алгоритм выделения памяти в реальном времени.

Подробное объяснение:

  • Подсчет ссылок:

    • Когда создается объект, счетчик ссылок устанавливается в 1.

    • При присвоении объекта новой переменной или передаче в функцию, счетчик ссылок увеличивается.

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

    • Когда счетчик ссылок достигает нуля, Python автоматически освобождает память, занимаемую объектом.

  • Сборщик мусора:

    • Подсчет ссылок не может справиться с ситуациями, когда объекты ссылаются друг на друга циклически (так называемые циклические ссылки). В этом случае объекты могут не быть удалены, даже если на них нет прямых ссылок.

    • Сборщик мусора периодически сканирует память в поисках таких циклических ссылок и удаляет объекты, вовлеченные в эти циклы, когда они больше не используются.

Преимущества автоматического управления памятью:

  1. Упрощение разработки: Разработчикам не нужно явно выделять или освобождать память, что снижает сложность кода и риск утечек памяти.

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

  3. Эффективность: Автоматическое управление памятью в Python достаточно эффективно в большинстве случаев, так как позволяет сэкономить память.

Таким образом, вариант B является верным ответом.


50, Правильный ответ: B

Объяснение:

Оператор import в Python является фундаментальным для организации кода в модули и повторного использования кода из других файлов или библиотек.

  • Вариант A не верен: Оператор import не загружает все доступные модули, а только те, которые явно указаны в import-запросе.

  • Вариант B верен: Именно оператор import делает доступным код из других модулей, позволяя повторно использовать код и организовывать программу в виде модулей.

  • Вариант C не верен: Python действительно компилирует импортированный модуль в байт-код (файл .pyc), но это делается для ускорения будущих импортов, а не для снижения гибкости.

  • Вариант D не верен: Оператор import не шифрует код.

Подробное объяснение:

  • Модули: В Python модулем является любой файл с расширением .py. Он может содержать функции, классы и переменные, которые могут быть использованы в других программах.

  • import: Ключевое слово import загружает модуль в текущее пространство имен, позволяя использовать его код. Вы можете импортировать модуль целиком (например, import math) или импортировать конкретные элементы модуля (например, from math import sqrt).

  • Цель импорта: Позволяет разработчикам включать функциональность из одного модуля в другой.

  • Повторное использование кода: Программисты могут повторно использовать код в разных частях программы или в разных программах.

  • Модульность: Программа может быть разделена на логические блоки (модули), каждый из которых выполняет свою определенную функцию.

Пример:

101 игра на python. Вопросы собеседований. 41 - 50 Гайд, Программирование, Python, Собеседование, Junior, Длиннопост

В результате:

  • Скрипт main.py успешно импортирует модуль my_module и использует его функцию my_function().

  • Скрипт main.py импортирует функцию sqrt из модуля math и использует её.

Таким образом, вариант B является правильным, точно описывая назначение и использование оператора import.


Продолжение следует. Подпишись, чтобы не пропустить.

Удачи!

Показать полностью 9
[моё] Гайд Программирование Python Собеседование Junior Длиннопост
0
9
PythonGet
PythonGet
4 месяца назад
Программирование на python
Серия Python_get

Defaultdict: как накормить кота, если миска пустая?⁠⁠

Представьте, что у вас есть кот Барсик. Вы зовёте его к миске, но вдруг понимаете, что забыли положить туда еду. Барсик смотрит на вас с укором, а вы судорожно ищете, чем его накормить. В Python для таких ситуаций есть defaultdict, который автоматически заполняет "пустую миску" значением по умолчанию.

Сегодня мы разберёмся, как работает defaultdict, зачем он нужен и как он может спасти вас от ошибок.

О чём речь?

defaultdict — это специальный словарь из модуля collections, который автоматически создаёт значение для отсутствующего ключа. Если обычный словарь выбрасывает ошибку KeyError, когда вы обращаетесь к несуществующему ключу, то defaultdict просто добавляет этот ключ с заданным значением по умолчанию.

Как это работает?

defaultdict — это как автоматическая кормушка для котов. Если кот приходит к пустой миске, кормушка сама наполняет её едой. В коде это выглядит так:

Defaultdict: как накормить кота, если миска пустая? Программирование, Обучение, Урок, Python, Кот, Длиннопост

Для Барсика мы явно указали еду, а для Мурзика значение было создано автоматически.

Алгоритм использования defaultdict

  1. 🐾 Импортируйте defaultdict из модуля collections.

  2. 🐾 Укажите функцию, которая будет возвращать значение по умолчанию (например, lambda: "default_value").

  3. 🐾 Используйте словарь как обычно. Если ключ отсутствует, он будет автоматически добавлен с заданным значением.

Примеры использования

1. Подсчёт количества котов

Допустим, у вас есть список котов, и вы хотите подсчитать, сколько раз каждое имя встречается.

Обычный словарь:

Defaultdict: как накормить кота, если миска пустая? Программирование, Обучение, Урок, Python, Кот, Длиннопост

Этот код работает, но он громоздкий.

С defaultdict:

Defaultdict: как накормить кота, если миска пустая? Программирование, Обучение, Урок, Python, Кот, Длиннопост

Здесь int используется как функция по умолчанию, которая возвращает 0.

2. Группировка котов по длине имени

Допустим, вы хотите сгруппировать котов по длине их имён.

Defaultdict: как накормить кота, если миска пустая? Программирование, Обучение, Урок, Python, Кот, Длиннопост

Здесь list используется как функция по умолчанию, которая создаёт пустой список.

3. Создание словаря с вложенными словарями

Иногда нужно создать словарь, где значения сами являются словарями.

Defaultdict: как накормить кота, если миска пустая? Программирование, Обучение, Урок, Python, Кот, Длиннопост

Здесь мы используем lambda, чтобы создать вложенные словари.

Когда использовать?

🐾✅ Используйте defaultdict, если:

  • Вы хотите избежать ошибок KeyError.

  • Вам нужно автоматически создавать значения для отсутствующих ключей.

  • Вы работаете с вложенными структурами данных.

🐾❌ Не используйте defaultdict, если:

  • Вам нужно знать, какие ключи отсутствуют.

  • Вы хотите, чтобы словарь оставался неизменным.

Метафора с котиками

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

Плюсы и минусы

🐾 Плюсы:

✅ Избавляет от необходимости проверять наличие ключа.

✅ Упрощает код.

✅ Подходит для работы с вложенными структурами.

🐾 Минусы:

❌ Может скрыть ошибки, если вы случайно обращаетесь к несуществующему ключу.

❌ Не всегда очевидно, что значение создаётся автоматически.

Примеры использования в реальной жизни

🐍 Подсчёт частоты: анализ текста, подсчёт слов или символов.

📦 Группировка данных: распределение элементов по категориям.

🛠 Работа с вложенными структурами: создание многомерных словарей.

Как не запутаться?

  1. 🐾 Используйте defaultdict, если вам нужно значение по умолчанию.

  2. 🐾 Всегда указывайте функцию по умолчанию (например, int, list или lambda).

  3. 🐾 Не забывайте, что defaultdict автоматически добавляет ключи.

О чём ещё вам было бы интересно почитать? Расскажите в комментариях! 🐾

Да, канале https://t.me/pytonism вас ждёт очередная задача )) Успешного кодинга!

Показать полностью 5
[моё] Программирование Обучение Урок Python Кот Длиннопост
1
6
PythonGet
PythonGet
4 месяца назад
Программирование на python
Серия Python_get

Словари и коты: как объединить миски без драки⁠⁠

Представьте, что у вас есть два кота: Барсик и Мурзик. У каждого из них есть свои миски с едой. Но вот беда: вы хотите объединить их миски в один общий список, чтобы не путаться. Как это сделать, чтобы коты не подрались? В Python есть несколько способов объединения словарей, и сегодня мы разберём их все.

О чём речь?

Словари (или dict) — это одна из самых популярных структур данных в Python. Иногда возникает необходимость объединить два или более словарей в один. Например:

🐾 У вас есть настройки по умолчанию и пользовательские настройки.

🐾 Вы хотите объединить данные из разных источников.

🐾 Вы просто хотите, чтобы Барсик и Мурзик делили свои миски.

Как это работает?

Python предлагает несколько способов объединения словарей. Мы рассмотрим:

  1. 🐾 Метод update().

  2. 🐾 Оператор | (Python 3.9+).

  3. 🐾 Распаковку словарей (**).

  4. 🐾 ChainMap из модуля collections (рассмотрели в прошлом посте)

1. Метод update()

Метод update() добавляет элементы из одного словаря в другой. Если ключи совпадают, значения будут перезаписаны.

Пример:

Словари и коты: как объединить миски без драки Программирование, Обучение, Урок, Python, Словарь, Кот, Update, Распаковка, Длиннопост

Значение для ключа Barsik было перезаписано.

2. Оператор | (Python 3.9+)

С появлением Python 3.9 объединение словарей стало ещё проще. Оператор | создаёт новый словарь, объединяя два других.

Пример:

Словари и коты: как объединить миски без драки Программирование, Обучение, Урок, Python, Словарь, Кот, Update, Распаковка, Длиннопост

Здесь создаётся новый словарь, а исходные остаются неизменными.

3. Распаковка словарей (**)

Распаковка словарей позволяет объединить их, создавая новый словарь. Это работает даже в версиях Python до 3.9.

Пример:

Словари и коты: как объединить миски без драки Программирование, Обучение, Урок, Python, Словарь, Кот, Update, Распаковка, Длиннопост

Как и в предыдущих примерах, значение для Barsik было перезаписано.

Когда использовать?

🐾 update():

  • Когда нужно изменить существующий словарь.

  • Если не важно сохранить исходные данные.

🐾 Оператор |:

  • Когда нужен новый словарь.

  • Если вы используете Python 3.9+.

🐾 Распаковка (**):

  • Когда нужен новый словарь.

  • Если вы используете Python до 3.9.

Метафора с котиками

Представьте, что у вас есть две коробки с игрушками: одна для Барсика, другая для Мурзика.

  • Если вы пересыпаете игрушки из одной коробки в другую, это update().

  • Если вы берёте новую коробку и кладёте туда игрушки из других коробок, это оператор | или распаковка.

  • Если вы просто ставите коробки рядом и говорите: "Теперь это одна большая коробка", это ChainMap.

О чём ещё вам было бы интересно почитать? Расскажите в комментариях! 🐾

И, по начинающейся традиции, на канале https://t.me/pytonism вас ждёт новая задача! Успешного кодинга!

Показать полностью 3
[моё] Программирование Обучение Урок Python Словарь Кот Update Распаковка Длиннопост
0
7
PythonGet
PythonGet
4 месяца назад
Программирование на python
Серия Python_get

OrderedDict и ChainMap: как коты наводят порядок в своих мисках⁠⁠

Представьте, что у вас есть кот Барсик, который любит, чтобы его миски с едой всегда стояли в определённом порядке. А ещё у вас есть Мурзик, который хочет, чтобы его миски объединялись с мисками Барсика, но при этом каждая миска сохраняла свою уникальность. В Python для таких задач есть два замечательных инструмента: `OrderedDict` и `ChainMap`.

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

О чём речь?

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

ChainMap: это структура данных, которая объединяет несколько словарей в один. Это как если бы вы объединили миски Барсика и Мурзика, но при этом каждая миска осталась на своём месте.

Как это работает?

1. OrderedDict

OrderedDict — это словарь, который помнит порядок добавления элементов. В Python 3.7+ обычные словари тоже сохраняют порядок, но OrderedDict предоставляет дополнительные возможности, такие как перемещение элементов.

Пример:

OrderedDict и ChainMap: как коты наводят порядок в своих мисках Программирование, Обучение, Python, Кот, Длиннопост

Здесь порядок добавления сохраняется: сначала Барсик, потом Мурзик, потом Белла.

2. ChainMap

ChainMap позволяет объединить несколько словарей в один. Это полезно, если у вас есть несколько источников данных, и вы хотите работать с ними как с одним словарём.

Пример:

OrderedDict и ChainMap: как коты наводят порядок в своих мисках Программирование, Обучение, Python, Кот, Длиннопост

Теперь вы можете обращаться к combined_food как к одному словарю.

Примеры использования

1. Работа с OrderedDict

Допустим, вы хотите отсортировать миски котов по алфавиту, а потом переместить любимую миску Барсика в начало.

OrderedDict и ChainMap: как коты наводят порядок в своих мисках Программирование, Обучение, Python, Кот, Длиннопост

move_to_end позволяет перемещать элементы в начало или конец.

2. Работа с ChainMap

Представьте, что у вас есть два словаря: один для текущих мисок, другой для запасных. Вы хотите сначала проверить текущие миски, а если там нет еды, обратиться к запасным.

OrderedDict и ChainMap: как коты наводят порядок в своих мисках Программирование, Обучение, Python, Кот, Длиннопост

ChainMap сначала ищет ключ в первом словаре, а если не находит, переходит ко второму.

Когда использовать?

🐾 OrderedDict:

  • Когда важен порядок элементов.

  • Когда нужно перемещать элементы (например, для реализации очередей).

🐾 ChainMap:

  • Когда нужно объединить несколько словарей.

  • Когда вы работаете с конфигурациями (например, объединение настроек по умолчанию и пользовательских настроек).

    Плюсы и минусы

🐾 OrderedDict:

  • ✅ Сохраняет порядок.

  • ✅ Предоставляет дополнительные методы (например, move_to_end).

  • ❌ Может быть медленнее, чем обычный словарь.

🐾 ChainMap:

  • ✅ Удобен для объединения словарей.

  • ✅ Не требует копирования данных.

  • ❌ Не поддерживает методы изменения (например, pop).

Примеры использования в реальной жизни

🐍 Конфигурации: объединение настроек по умолчанию и пользовательских настроек.

📦 Кэширование: работа с несколькими уровнями кэша.

🛠 Обработка данных: сортировка и объединение данных из разных источников.

Вопрос к вам

А вы когда-нибудь использовали OrderedDict и ChainMap в своих проектах? Поделитесь своими примерами в комментариях! 🐾

---

И в качестве небольшой разминки — приглашаю вас решить задачу на t.me/pytonism! Хорошего вам кодинга!

Показать полностью 4
[моё] Программирование Обучение Python Кот Длиннопост
1
0
datadreamen
datadreamen
4 месяца назад

Аналитическое бинго⁠⁠

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

Предлагаю подвести итоги, зачеркивая клеточки в Новогоднем аналитическом бинго! Забирайте себе файлик, скриншотьте, зачеркивайте и делитесь тем, как прошел ваш 2024

Если хотите еще больше про аналитику, карьеру в ИТ и данные - подписывайтесь на тг канал про аналитику data dreamen https://t.me/data_dreamen

Аналитическое бинго Бинго, Аналитика, SQL, Python, Большие данные, Microsoft Excel, Data Science, Данные, Новый Год
Показать полностью 1
[моё] Бинго Аналитика SQL Python Большие данные Microsoft Excel Data Science Данные Новый Год
0
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии