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

Пинбол Пикабу

Аркады, На ловкость, Казуальные

Играть

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

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

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

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

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

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

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

Python3

984 поста сначала свежее
7
PythonGet
PythonGet
4 месяца назад
Программирование на python
Серия Python_get

Котики и функции высшего порядка: как приручить мощь Python⁠⁠

Представьте себе кота. Он может быть просто милым пушистиком, который мурлычет на диване, а может стать настоящим охотником, ловящим мышей. Так и функции в Python: они могут быть простыми, а могут стать мощным инструментом, если вы научитесь использовать их как функции высшего порядка. Сегодня мы разберёмся, что это за зверь такой, и как он может сделать ваш код элегантным, как прыжок кота на шкаф.

О чём речь?

Функции высшего порядка (higher-order functions) — это функции, которые могут принимать другие функции в качестве аргументов или возвращать их как результат. Это как если бы вы дали коту игрушку, а он вернул вам её с мышкой внутри. 🐭

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

Функции высшего порядка — это основа функционального программирования. Они позволяют вам писать более компактный, читаемый и модульный код. Вместо того чтобы писать длинные циклы или повторяющийся код, вы можете передавать функции как аргументы, делая ваш код более выразительным.

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

Котики и функции высшего порядка: как приручить мощь Python Программирование, Обучение, Python, Кот, Длиннопост

Что здесь происходит?

🐾 map — это функция высшего порядка, потому что она принимает другую функцию (double) в качестве аргумента.

🐾 double — это обычная функция, которая просто удваивает число.

🐾 map применяет double ко всем элементам списка numbers.

Историческая справка

Функции высшего порядка пришли к нам из функционального программирования, которое зародилось ещё в 1950-х годах. Один из первых языков, поддерживающих такие функции, — Lisp. Это как древний кот, который научил всех остальных ловить мышей. 🐾 В Python же они стали популярны благодаря своей простоте и универсальности.

Примеры использования в различных ситуациях

🐾 Фильтрация данных

Допустим, у вас есть список котов, и вы хотите оставить только тех, кто весит больше 5 кг. Используем filter:

Котики и функции высшего порядка: как приручить мощь Python Программирование, Обучение, Python, Кот, Длиннопост

🐾 Сортировка данных

Хотите отсортировать котов по весу? Используем sorted с функцией lambda:

Котики и функции высшего порядка: как приручить мощь Python Программирование, Обучение, Python, Кот, Длиннопост

🐾 Комбинирование функций

А теперь представьте, что вы хотите сначала отфильтровать тяжёлых котов, а потом отсортировать их по имени. Легко!

Котики и функции высшего порядка: как приручить мощь Python Программирование, Обучение, Python, Кот, Длиннопост

Приручите функции высшего порядка 🐾

Функции высшего порядка — это как универсальный кот, который может и мышей ловить, и на диване валяться. Они делают ваш код более выразительным, компактным и модульным. Вместо того чтобы писать длинные циклы или повторяющийся код, вы можете использовать такие инструменты, как map, filter, reduce и другие. Это не только экономит ваше время, но и делает код более читаемым для других разработчиков (и для вас через пару месяцев, когда вы забудете, что там написали).

Попробуйте использовать функции высшего порядка в своих проектах, и вы увидите, как они упрощают вашу жизнь. А если что-то непонятно — не стесняйтесь задавать вопросы! 🐾

А если хотите стать мастером функций высшего порядка, переходите на https://t.me/pytonism и читайте!))

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

Разработчик Python⁠⁠

Приходит сейчас на консультацию дедок, лет за 70.
- Вляпался я в лабуду такую. В интернете увидел рекламу urban university. Дают государственные гранты на обучение.

Смысл такой. Оформляешь кредит, а институт за тебя платит 6 месяцев.

-Так вот, 4 месяца они проплатили, а вот остальные 2 платежа нет. Плачу сам. Что мне делать?

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

Но больше меня поразило другое.

Дедушке лет уже очень много, а стремление к новым знаниям никуда не делось!
Мне бы его стремление!

Кстати учится он на разработчика Python . 🐍

[моё] Разработчики Python Учеба Без рейтинга Текст
7
10
hypo69
hypo69
4 месяца назад
Программирование на python
Серия Вопросы собеседований - разработчик python 1 - 100

Вопросы собеседований. 61 - 70⁠⁠

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


Вопросы

Вопрос 61.
Что произойдет при добавлении нового узла со значением 25 в бинарное дерево поиска (BST), представленное на изображении ниже?

Вопросы собеседований. 61 - 70 Гайд, Программирование, Python, Длиннопост
  • A. Узел 25 будет добавлен как левый потомок узла 40.

  • B. Узел 25 будет добавлен как правый потомок узла 20.

  • C. Узел 25 будет добавлен как правый потомок узла 40.

  • D. Узел 25 не будет добавлен, так как такой узел уже существует в дереве.


Вопрос 62.
Как функция enumerate() улучшает функциональность цикла в Python при работе со списком?

  • A. Она переворачивает список для перебора в обратном порядке.

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

  • C. Она умножает каждый элемент на его номер индекса для получения нового списка.

  • D. Enumerate блокирует список для предотвращения изменений во время итерации.


Вопрос 63.
Что такое функциональный паттерн проектирования "Map" (отображение) и как он используется в Python? Приведите пример использования этого паттерна для преобразования элементов коллекции.

  • A. Паттерн "Map" - это способ сортировки элементов в коллекции, используя заданную функцию.

  • B. Паттерн "Map" - это способ фильтрации элементов в коллекции, используя заданное условие.

  • C. Паттерн "Map" - это способ объединения элементов коллекции в одно значение, используя заданную функцию.

  • D. Паттерн "Map" - это способ применения функции к каждому элементу коллекции и создания новой коллекции из полученных результатов.



Вопрос 64. Какой результат выведет на экран следующий код Python?

Вопросы собеседований. 61 - 70 Гайд, Программирование, Python, Длиннопост
  • A. 7

  • B. 6

  • C. 5

  • D. 4


Вопрос 65.
Какой будет результат выполнения следующего кода?

Вопросы собеседований. 61 - 70 Гайд, Программирование, Python, Длиннопост
  • A. [1, 2, 3] [1, 2, 3, 4, 5]

  • B. [1, 2, 3, 4] [1, 2, 3, 4, 5]

  • C. [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]

  • D. [1, 2, 3] [1, 2, 3, 5]


Вопрос 66.
Какой тип данных был бы наиболее подходящим для хранения уникальных идентификаторов пользователей (user IDs) в Python?

  • A. Список (List)

  • B. Словарь (Dictionary)

  • C. Множество (Set)

  • D. Кортеж (Tuple)


Вопрос 67.
В Python, каков результат преобразования типов, если вы используете функцию int() для числа с плавающей точкой, такого как 7.7?

  • A. Она округляет число до ближайшего целого числа.

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

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

  • D. Это вызывает ValueError, если явно не обработано исключение.


Вопрос 67.
Дан массив целых чисел nums, содержащий n элементов, и целое число k. Разработайте алгоритм для поиска непрерывного подмассива (subarray) длины k в массиве nums, который имеет максимальное среднее значение. Возвратите это максимальное среднее значение.

Примеры:

Ввод: nums = [1,12,-5,-6,50,3], k = 4
Вывод: 12.75000

Ввод: nums = [5], k = 1
Вывод: 5.00000

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

  • B. Для решения задачи нужно использовать алгоритм поиска в ширину (BFS).

  • C. Для решения задачи нужно использовать метод "скользящего окна" для эффективного поиска максимального среднего.

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


Вопрос 69.
Что такое "Immutability" (иммутабельность) в контексте функционального программирования, и какие преимущества она предоставляет? Приведите примеры изменяемых и неизменяемых объектов в Python и объясните, как использование иммутабельности может упростить код.

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

  • B. Иммутабельность - это использование объектов только для чтения.

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

  • D. Иммутабельность - это паттерн проектирования для создания только одного объекта определенного типа, без возможности изменения его состояния.


Вопрос 70.
Что такое композиция функций, и как ее можно реализовать в Python? Приведите пример кода, демонстрирующий композицию функций, где результат одной функции передается в качестве аргумента другой.

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

  • B. Композиция функций - это процесс, когда функция вызывает себя несколько раз.

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

  • D. Композиция функций - это способ создания функций, которые могут выполняться в отдельных потоках.


Ответы

61. Правильный ответ: B

Объяснение:

Бинарное дерево поиска (BST, Binary Search Tree) - это древовидная структура данных, где для каждого узла выполняются следующие свойства:

  • Значение всех узлов в левом поддереве меньше значения узла.

  • Значение всех узлов в правом поддереве больше значения узла.

  • Оба левое и правое поддерево тоже являются BST.

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

  • Процесс добавления узла со значением 25:

    1. Начало с корня: Начинаем поиск места для добавления нового узла с корня (30).

    2. Сравнение с корнем: Так как 25 меньше 30, переходим в левое поддерево.

    3. Сравнение с узлом 20: Так как 25 больше 20, то переходим в правое поддерево от узла 20.

    4. Правый потомок 20: Узел 20 не имеет правого потомка, поэтому узел со значением 25 будет добавлен как правый потомок узла 20.

Разбор вариантов:

  • A. Узел 25 будет добавлен как левый потомок узла 40.: Неправильно, так как 25 меньше 40.

  • B. Узел 25 будет добавлен как правый потомок узла 20.: Правильно.

  • C. Узел 25 будет добавлен как правый потомок узла 40.: Неправильно.

  • D. Узел 25 не будет добавлен, так как такой узел уже существует в дереве.: Неправильно. В данном случае узла 25 нет, так как это дерево поиска и одинаковых элементов не может быть.

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

  • При добавлении нового узла в BST необходимо соблюдать свойства бинарного дерева поиска.

  • Правильная вставка узлов обеспечивает возможность быстрого поиска в BST.

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


62. Правильный ответ: B

Объяснение:

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

  • Вариант A не верен: enumerate() не переворачивает список. Для этого используется метод reverse().

  • Вариант B верен: enumerate() добавляет счетчик (индекс) к каждому элементу, предоставляя кортеж (индекс, значение) на каждой итерации.

  • Вариант C не верен: enumerate() не меняет значения элементов и не создает новый список.

  • Вариант D не верен: enumerate() не блокирует список и не предотвращает изменения во время итерации.

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

  1. Функция enumerate() принимает в качестве аргумента итерируемый объект (список, кортеж, строку и т. д.).

  2. Она возвращает объект-итератор, который выдаёт кортежи, состоящие из двух элементов: индекса и значения элемента.

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

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

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

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

  • Эффективность: enumerate часто более эффективен, чем ручное отслеживание индекса, поскольку Python автоматически оптимизирует этот процесс.

Пример:

Вопросы собеседований. 61 - 70 Гайд, Программирование, Python, Длиннопост

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

  • При использовании enumerate(), цикл автоматически предоставляет индекс и значение каждого элемента списка.

  • При использовании enumerate(my_list, start=1) индексы начинаются с 1.

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


63. Правильный ответ: D

Объяснение:

Паттерн "Map" (отображение) — это распространенный функциональный паттерн, который применяется для преобразования каждого элемента в коллекции (например, список, кортеж) в новый элемент с использованием определенной функции. Результатом является новая коллекция, содержащая преобразованные элементы.

  • Основные концепции паттерна "Map":

    • Применение функции: Функция "отображения" применяется к каждому элементу входной коллекции.

    • Новая коллекция: Результаты применения функции сохраняются в новой коллекции.

    • Сохранение порядка: Обычно сохраняется порядок элементов (если это применимо к структуре данных).

    • Использование с функциями высшего порядка: Часто реализуется с помощью функций высшего порядка, таких как map() в Python.

  • Как работает паттерн "Map":

    1. Принимает входную коллекцию элементов.

    2. Принимает функцию преобразования.

    3. Применяет функцию к каждому элементу коллекции.

    4. Собирает результаты преобразования в новую коллекцию.

    5. Возвращает новую коллекцию с преобразованными значениями.

Примеры:

Вопросы собеседований. 61 - 70 Гайд, Программирование, Python, Длиннопост

Разбор примеров:

  1. Использование с обычной функцией square:

    • Функция square(x) возводит число в квадрат.

    • Функция map(square, numbers) применяет функцию square к каждому элементу списка numbers и возвращает итератор. Затем итератор преобразовывается в список.

    • Выводит исходный и новый списки.

  2. Использование с лямбда функцией:

    • Лямбда-функция lambda x: x ** 3 вычисляет куб числа.

    • Функция map(lambda x: x ** 3, numbers) применяет лямбду к каждому элементу списка numbers и возвращает итератор. Затем итератор преобразовывается в список.

    • Выводит исходный и новый списки.

  3. Использование map с преобразованием строк:

    • Лямбда-функция lambda x: x.upper() переводит строку в верхний регистр.

    • Функция map(lambda x: x.upper(), strings) применяет лямбда-функцию к каждой строке в списке strings.

    • Выводит исходный и новый списки.

  4. Использование map с несколькими коллекциями:

    • Лямбда-функция lambda x,y: x+y суммирует два числа.

    • Функция map(lambda x,y: x+y, list1, list2) применяет лямбда-функцию к каждому элементу в списках list1 и list2 (берет элементы с одинаковым индексом).

    • Выводит исходные списки и список сумм.

  5. Использование map c функцией, которая возвращает кортеж:

    • Лямбда функция lambda s, i: (i, s) создает пару (индекс, значение) для каждой строки в списке.

    • функция map создает список кортежей.

    • Выводит исходный список и список с проиндексированными строками.

  6. Использование map с различными типами данных:

    • Лямбда функция lambda x: type(x) возвращает тип объекта.

    • Функция map применяет эту функцию к каждому элементу в списке, что приводит к созданию списка типов.

    • Выводит исходный список и список типов.

Разбор вариантов:

  • A. Паттерн "Map" - это способ сортировки элементов в коллекции, используя заданную функцию.: Неправильно. Сортировка - это другая операция.

  • B. Паттерн "Map" - это способ фильтрации элементов в коллекции, используя заданное условие.: Неправильно. Фильтрация используется для выборки элементов по условию.

  • C. Паттерн "Map" - это способ объединения элементов коллекции в одно значение, используя заданную функцию.: Неправильно. Это описание паттерна Reduce.

  • D. Паттерн "Map" - это способ применения функции к каждому элементу коллекции и создания новой коллекции из полученных результатов.: Правильно.

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

  • Паттерн "Map" позволяет создавать новый список путем преобразования элементов исходного списка с помощью функции преобразования.

  • Используя функцию map и лямбда-функции можно легко реализовать паттерн Map.

  • Функция map позволяет применять функцию к нескольким спискам одновременно.

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

Таким образом, правильным ответом является D. Паттерн "Map" - это способ применения функции к каждому элементу коллекции и создания новой коллекции из полученных результатов.


64. Правильный ответ: B

Объяснение:

Этот код демонстрирует работу замыканий (closures) и областей видимости переменных в Python.

  1. Функция outer_func(y):

    • Принимает аргумент y (в примере равен 3).

    • Инициализирует локальную переменную x значением 2.

    • Определяет вложенную функцию inner_func().

      • inner_func() "замыкается" над переменными из области видимости outer_func и возвращает сумму x + y.

    • Изменяет x на x + 2, то есть x теперь равен 4.

    • Изменяет y на 2.

    • Возвращает функцию inner_func как результат.

  2. Вызов outer_func(3):

    • Вызывает outer_func с аргументом 3.

    • Возвращаемая функция inner_func присваивается переменной results.

    • Важно отметить, что вложенная функция inner_func запоминает не значения переменных x и y в момент определения, а сами переменные, и они подставятся в момент вызова inner_func.

  3. Вызов results():

    • Вызывает функцию inner_func, которая была возвращена из outer_func и присвоена results.

    • Внутри inner_func:

      • x имеет значение 4, которое было вычислено в outer_func перед ее возвращением.

      • y имеет значение 2, которое было присвоено в outer_func перед ее возвращением.

    • Возвращается значение x + y = 4 + 2 = 6.

  4. Вывод: print(results()) выводит результат вызова inner_func ,то есть 6.

Разбор вариантов:

  • A. 7: Неправильно.

  • B. 6: Правильно.

  • C. 5: Неправильно.

  • D. 4: Неправильно.

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

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

  • Захват переменной происходит по ссылке, а не по значению. В момент вызова inner_func переменные x и y будут иметь последнее присвоенное значение.

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


65. Правильный ответ: B

Объяснение:

Этот код демонстрирует разницу между мутированием списка и созданием нового списка, а также то, как это влияет на переменные в Python.

  1. Изначальный список: my_list инициализируется как [1, 2, 3].

  2. Функция modify_list:

    • Принимает список lst в качестве аргумента.

    • lst.append(4): Метод append мутирует список, добавляя 4 в конец. Теперь lst (изначально my_list) стал [1, 2, 3, 4].

    • lst = lst + [5]: Операция + создает новый список, объединяя lst c [5]. Результат присваивается локальной переменной lst внутри функции. Это не изменяет my_list в глобальной области видимости.

    • Возвращается новый список lst.

  3. Вызов modify_list: Функция вызывается с my_list как аргументом. Возвращаемый новый список присваивается переменной new_list.

  4. Вывод:

    • print(my_list) выведет [1, 2, 3, 4], так как my_list был мутирован внутри функции.

    • print(new_list) выведет [1, 2, 3, 4, 5], который является новым списком, созданным в функции и возвращенным.

Дополнительные замечания:

  • Метод append изменяет исходный список (мутирует его).

  • Оператор + создает новый список, не изменяя исходные.

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

  • Понимание разницы между мутацией и созданием новых объектов важно для предотвращения нежелательных побочных эффектов при работе со списками в Python.


66. Правильный ответ: C

Объяснение:

В Python для хранения уникальных элементов наиболее подходит тип данных set (множество).

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

  • Вариант B не верен: Словари хранят пары ключ-значение, и хотя ключи должны быть уникальными, для хранения просто уникальных идентификаторов пользователей это неэффективно.

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

  • Вариант D не верен: Кортежи являются неизменяемыми и могут хранить повторяющиеся элементы.

Почему множество (set) подходит для хранения уникальных идентификаторов:

  1. Уникальность элементов: Множества автоматически удаляют дубликаты, что идеально подходит для хранения уникальных идентификаторов.

  2. Быстрая проверка наличия: Проверка наличия элемента в множестве выполняется очень быстро (в среднем O(1)), благодаря реализации на основе хеш-таблицы.

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

  4. Изменяемость: Множества могут быть изменены (добавлять или удалять элементы).

Пример:

Вопросы собеседований. 61 - 70 Гайд, Программирование, Python, Длиннопост

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

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

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

  • Операция in проверки наличия элемента в множестве выполняется быстро.

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


67. Правильный ответ: B

Объяснение:

Функция int() в Python используется для преобразования значения к целому числу. При преобразовании числа с плавающей точкой (float) в целое число (int), функция int() отбрасывает десятичную часть, а не округляет.

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

  • Вариант B верен: int() именно отбрасывает десятичную часть и возвращает целое число.

  • Вариант C не верен: int() не выполняет округление по правилам "меньше .5 в меньшую сторону, больше - в большую".

  • Вариант D не верен: Функция int() может конвертировать строку, представляющую целое число, к integer типу, но не строку с плавающей точкой (например "7.7") и не вызовет ValueError при конвертации числа float в int

Пример:

Вопросы собеседований. 61 - 70 Гайд, Программирование, Python, Длиннопост

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

  • При преобразовании 7.7 с помощью int(), возвращается 7, десятичная часть отброшена.

  • При преобразовании -7.7, возвращается -7.

  • При преобразовании 7.2, возвращается 7.

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


68. Правильный ответ: C

Объяснение:

Для решения задачи поиска подмассива с максимальным средним значением и фиксированной длиной k в массиве чисел, оптимальным является применение метода "скользящего окна". Этот метод обеспечивает линейную временную сложность O(n), позволяя обойти массив только один раз.

  • Алгоритм (скользящее окно):

    1. Инициализация:

      • Вычисляем сумму первых k элементов массива, и сохраняем их в переменной current_sum.

      • Максимальная сумма max_sum инициализируется значением current_sum.

    2. Скользящее окно:

      • Начиная с k-го элемента до конца массива (для индекса i), поддерживаем окно размера k:

        • Из current_sum вычитаем элемент из начала окна (nums[i-k]). * К current_sum добавляем новый элемент в конце окна nums[i].

      • Сравниваем current_sum с max_sum и если больше то max_sum = current_sum

    3. Возвращаем результат: После перебора всех элементов, возвращаем max_sum / k, что соответствует максимальному среднему значению подмассива.

  • Преимущества алгоритма:

    • Линейная сложность: Обеспечивает временную сложность O(n).

    • Постоянная память: Использует постоянное количество дополнительной памяти.

    • Простота: Легок в реализации.

Пример:

Вопросы собеседований. 61 - 70 Гайд, Программирование, Python, Длиннопост

Разбор вариантов:

  • A. Для решения задачи нужно сначала отсортировать массив capacity, затем последовательно заполнять сумки, пока не закончатся камни.: Неправильно.

  • B. Для решения задачи нужно использовать алгоритм поиска в ширину (BFS).: Неправильно. BFS не является подходящим для этой задачи.

  • C. Для решения задачи нужно использовать метод "скользящего окна" для эффективного поиска максимального среднего.: Правильно.

  • D. Для решения задачи нужно использовать только рекурсивный алгоритм.: Неправильно. Рекурсивный алгоритм не подходит.

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

  • Алгоритм скользящего окна позволяет эффективно находить подмассив с максимальным средним значением.

  • Итерируясь по массиву только один раз достигается сложность O(n)

  • Результирующее среднее значение будет получено с помощью деления максимальной суммы на размер подмассива k

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


69. Правильный ответ: C

Объяснение:

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

  • Основные принципы иммутабельности:

    • Неизменяемость: Объекты не могут быть изменены после создания.

    • Новый объект при изменении: Любая операция, которая кажется изменяет объект, на самом деле создаёт новый объект с измененными значениями.

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

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

  • Преимущества иммутабельности:

  • Безопасность: Исключение побочных эффектов, снижение вероятности ошибок, связанных с одновременным изменением объектов из разных частей программы. * Упрощение отладки: Код, который не изменяет данные, намного проще отлаживать. * Многопоточность: Легче работать с иммутабельными объектами в многопоточной среде, поскольку не нужно беспокоиться о гонках данных.

  • Иммутабельные и изменяемые объекты в Python:

    • Иммутабельные объекты: * Числа (int, float, complex). * Строки (str). * Кортежи (tuple). * frozenset - не изменяемые множества. * Булевы значения (bool).

    • Изменяемые объекты:

      • Списки (list).

      • Словари (dict).

      • Множества (set).

Примеры:

Вопросы собеседований. 61 - 70 Гайд, Программирование, Python, Длиннопост

Разбор примеров:

  1. Пример иммутабельных объектов:

    • string2 = string1.upper() создает новую строку string2 в верхнем регистре, а string1 не меняется.

    • tuple2 = tuple1 + (4,5) создает новый кортеж tuple2, а tuple1 не меняется.

  2. Пример изменяемых объектов:

    • list2 = list1 присваивает list2 ссылку на список, который хранится в list1, то есть, не создается новый список. * list1[0] = 10 изменяет оригинальный список, и поэтому все переменные, которые ссылаются на него, изменятся тоже.

    • list2 = list1.copy() создает новый список, и он не будет изменен после изменения list1

Разбор вариантов:

  • A. Иммутабельность - это концепция, которая означает, что объекты можно изменять только в одном месте, при их создании, но не после.: Неправильно.

  • B. Иммутабельность - это использование объектов только для чтения.: Неправильно. Иммутабельные объекты не могут быть изменены совсем, а не только для чтения.

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

  • D. Иммутабельность - это паттерн проектирования для создания только одного объекта определенного типа, без возможности изменения его состояния.: Неправильно.

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

  • Иммутабельность способствует созданию более безопасного, предсказуемого и простого кода.

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

Таким образом, правильным ответом является C. Иммутабельность - это концепция, которая заключается в избегании изменяемых данных и использовании только неизменяемых, что упрощает код и уменьшает вероятность побочных эффектов.


70. Правильный ответ: C

Объяснение:

Композиция функций (function composition) — это функциональный паттерн, который позволяет объединять две или более функции таким образом, что результат одной функции передается в качестве аргумента другой функции. Это позволяет создавать новые, более сложные функции, из простых и переиспользуемых.

  • Основные концепции композиции функций:

    • Цепочка вычислений: Результат одной функции становится входным значением для следующей функции.

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

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

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

  • Реализация композиции в Python:

    • В Python композицию можно реализовать вручную с помощью вложенных вызовов функций или с помощью оператора | (начиная с Python 3.9), или с помощью использования лямбда-функций.

Пример (из текста вопроса):

Вопросы собеседований. 61 - 70 Гайд, Программирование, Python, Длиннопост

Описание примера:

  1. double(x): Функция, которая умножает число x на 2.

  2. square(x): Функция, которая возводит число x в квадрат.

  3. compose(f, g): Функция, реализующая композицию.

    • Принимает функции f и g в качестве аргументов.

    • Возвращает лямбда-функцию lambda x: f(g(x)), которая сначала применяет функцию g к аргументу x, а затем применяет функцию f к результату g(x).

  4. composed = compose(square, double): Создается новая функция composed, которая является композицией square и double. Она эквивалента lambda x : square(double(x)).

  5. composed(5): Принимает аргумент 5 и выполняет функции в порядке (5*2)**2, т.е. double(5) (что равно 10) и затем square(10) (что равно 100).

Другие примеры:

Вопросы собеседований. 61 - 70 Гайд, Программирование, Python, Длиннопост

Разбор вариантов:

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

  • B. Композиция функций - это процесс, когда функция вызывает себя несколько раз.: Неправильно. Это описание рекурсии.

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

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

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

  • Композиция функций позволяет создавать более сложные операции из простых.

  • Использование композиции способствует модульности и переиспользованию кода.

Таким образом, правильным ответом является C. Композиция функций - это комбинация двух или более функций, при которой результат выполнения одной функции передается в качестве аргумента другой функции.

Показать полностью 10
[моё] Гайд Программирование Python Длиннопост
2
1
CheZter
CheZter
4 месяца назад
Лига Геймеров
Серия Нейросети и колхозный геймдев

Продолжение поста «Нейросети и колхозный геймдев, так сказать»⁠⁠1

В общем, посмотрел я на это всё дело и решил, что надо игру переносить на какой-нибудь движок. Или писать свой, что, в силу того, что я не умею программировать, выглядит как совершенно безумная задача даже с использованием нейронок, или использовать существующие. В общем, выбор пал на Unity.
На данный момент перенёс игрока, управление игроком, базовые спрайты анимации, генерацию чанков поверхностей с заполнением рандомными тайлами как в оригинале (это был ад на 4 часа ковыряния юнити и пинания нейронки), генерацию и поведение врагов (оно чуть-чуть изменилось, но пофиг, так как планирую вообще кардинально переделать эту тему в будущем), стрельбу, одно базовое оружие, нанесение урона и смерть, отображение здоровья, опыта и запаса патронов (пока без текста, только колбочки), а ещё добавил главное меню, анимированный фон для него, фоновую музыку для меню, настройки разрешения (да, оно реально меняется, я в шоке!), ну и сверху ещё навалил кнопочек для сохранения-загрузки, но пока что они не работают. Ну и кнопки New Game и Exit, соответственно, выполняют свои функции. Ну и интерфейс в игровом цикле перерисовал в нечто более лаконичное и структурированное. Цвет планирую потом подобрать поприятнее.

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

Из плюсов, которые ощущаю уже сейчас: полноценное GPU-ускорение, что даёт солидный прирост fps, нормальный графический интерфейс, который позволяет работать со сценами, не перелопачивая сотни строк кода, ну и вообще, горизонт возможностей видится теперь гораздо шире.

Как-то так :)

Показать полностью 1
[моё] ChatGPT Нейронные сети Программирование Игры Компьютерные игры Чат-бот Windows Python Видеоигра Видео RUTUBE Ответ на пост
8
1
user10161768
4 месяца назад
Серия Telegram бот, напоминающий о днях рождения

Telegram бот, напоминающий о днях рождениях (ещё один)⁠⁠

🎉 Birthday Reminder Telegram Bot: Спаситель забывчивых и их лучших друзей

Ссылка на бота: @pchelka_zh_birthday_reminder_bot

Github: birthday_reminder_bot

Если вы хоть раз пропускали день рождения друга — добро пожаловать в клуб!

Я создал Birthday Reminder Telegram Bot именно после того, как упустил важный день моего лучшего друга и понял, что пора перестать помнить дни рождения друзей

Кратко, почему оно тоже вам надо

  • Очень простой бот, если хотите - можете развернуть свою версию

  • Open source, принимаются все комментарии, пожелания и предложения

  • Есть фичи, которые нужны были мне, у которых нет аналогов

🌟 Почему этот бот — как универсальный пульт от вашей памяти

Telegram бот, напоминающий о днях рождениях (ещё один) Telegram, Бот, Python, День рождения, Длиннопост

- User friendly: Легко задавать дни рождения пачкой в разных форматах

- Настраиваемые напоминания: Зачем переживать о том, что забудете поздравить? Пусть напоминания бьют вас по голове за несколько дней заранее

- Автоматическое резервное копирование: Бот держит ваши данные в безопасности, так что даже если забудете что-то записать, он вам напомнит и об этом

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

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

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

- Поддержка групповых чатов

- Возможность удобно делиться днями рождения с друзьями

- Статистика: Всем же интересно смотреть на чиселки

🚀 Как развернуть своего бота?

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

- Вы умеете настраивать виртуальную машину. Например, на Yandex cloud

- Базовые знания пользования github

А дальше по инструкции (docker, python)

Github: birthday_reminder_bot

💡 Процесс использования

/start, а дальше бот расскажет вам о всех командах

🎈 Заключение

Пользуйтесь, приносите фидбек, никогда не пропускайте дни рождения друзей

Упоминания: на пикабу уже есть такой бот. Жалко, что он не работает(

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

Yet another велосипед, но свой и надежный

Показать полностью 1
[моё] Telegram Бот Python День рождения Длиннопост
26
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
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии