Сообщество - Программирование на python

Программирование на python

929 постов 11 940 подписчиков

Популярные теги в сообществе:

6

Программирование кажется слишком сложным. Может, это не моё?

Ты учишь Python, но чем дальше, тем сложнее. Код непонятный, задачи не решаются, всё раздражает. Возникает мысль: «Может, программирование — это просто не моё?»

Спойлер: так думают почти все новички. Давай разберёмся, почему так происходит и что с этим делать.

1. Ты не «глупый», просто программирование — это новый навык

Когда учишься кататься на велосипеде, сначала всё даётся тяжело. Также и с кодом — ты осваиваешь новый способ мышления.

Что делать:

Прими, что сложность — это нормально. У всех бывает ступор.

Не сравнивай себя с опытными разработчиками — они тоже через это проходили.

Дай себе время. Это не гонка.

2. "Я никогда не пойму это" — иллюзия

Мозгу не нравится неопределённость, поэтому он говорит: «Остановись, это не твоё». Но если ты уже разобрался, скажем, с циклами или функциями, значит, ты способен понять и остальное.

Что делать:

Вспомни, что раньше тоже казалось сложным (например, первые уроки Python). Теперь же это просто.

Записывай, чему ты научился — это поможет видеть прогресс.

Дай себе шанс разобраться, прежде чем делать выводы.

3. Ты не обязан понимать всё сразу

Если не получается понять сложную тему — отложи её. Вернись позже, когда у тебя будет больше знаний.

Что делать:

Разбей сложную тему на части. Например, не пытайся сразу понять всё про ООП, начни с классов.

Ищи альтернативные объяснения (видео, статьи, книги). Иногда помогает просто другой способ подачи.

4. Ошибки — это часть процесса

Программисты ошибаются каждый день. Даже самые опытные. Ошибки — не показатель, что тебе «не дано», а нормальный этап обучения.

Что делать:

Меняй отношение к ошибкам: это не провал, а способ научиться.

Разбирайся, почему код не работает. Debugging — это ключевая навык разработчика.

Ошибся? Отлично, теперь ты знаешь, как делать правильно.

5. Когда действительно стоит задуматься о смене направления?

Иногда программирование действительно может не подойти. Например, если:

Ты учишься месяцами, но оно вообще не вызывает интереса.

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

Тебе ближе другие направления в IT (аналитика, тестирование, дизайн).

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

Главное — не останавливаться

Программирование — это не врождённый талант, а навык, который можно развить. Если сейчас сложно, это не значит, что так будет всегда.

Если ты хочешь учиться вместе с такими же новичками и не сливаться — присоединяйся к нашему сообществу в Telegram. Вместе проще!

Показать полностью
7

Как учиться программированию, если у тебя есть основная работа?

Учить код, когда у тебя полный рабочий день — задача не из лёгких. Я знаю это по себе: днём работаю барменом, а вечерами пытаюсь разобраться в Python. Иногда всё идёт по плану, а иногда после смены сил хватает только на сон. Но я нашёл несколько способов, которые помогают не слиться.

1. Забудь про "идеальные" условия

Я раньше думал, что учиться нужно только в идеальной обстановке: свежая голова, тишина, 2-3 свободных часа. В реальности это невозможно.

Что делать:

Учить код даже в небольшие окна времени: 15-30 минут — это уже вклад.

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

2. Практика важнее теории

После работы сложно усваивать лекции и длинные статьи. Теория важна, но без практики всё быстро забывается.

Что делать:

Вместо бесконечного просмотра курсов пробовать писать код.

Учить что-то одно и сразу применять (например, изучил запросы — написал парсер).

3. Планируй минимум, но делай стабильно

Когда ставишь перед собой огромные цели, мотивация быстро пропадает. Я пробовал выделять 3-4 часа на код, но чаще всего просто сливался.

Что делать:

Ставить реальные задачи: "разобрать одну тему", "сделать небольшой кусок проекта".

Учиться каждый день, даже если это всего 20 минут.

4. Не вини себя за медленный прогресс

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

Что делать:

Сравнивать себя не с другими, а с собой месяц назад.

Фиксировать прогресс: вести дневник, писать код на GitHub, отмечать выученные темы.

5. Найди поддержку

Когда учишься один, легко потерять мотивацию. Мне помогает окружение: люди, которые тоже осваивают IT и делятся своим опытом.

Что делать:

Общаться с такими же новичками.

Читать истории тех, кто прошёл этот путь.

Я сам делюсь своим опытом перехода в IT в Telegram-канале. Присоединяйся, там проще не сдаться!

Учёба в таком режиме — не самая простая вещь, но главное — продолжать. Даже если кажется, что ты топчешься на месте, ты всё равно двигаешься вперёд.

Показать полностью
11

Вопросы собеседований. 71 - 80

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


Вопросы

Вопрос 71. Что делает метод split() при применении к строке в Python?

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

  • B. Он удаляет пробелы в начале и конце строки.

  • C. Он объединяет две строки в одну.

  • D. Он переворачивает строку.

Вопрос 72. Что такое монады в Python, и как они используются? Приведите пример использования монады Maybe для обработки возможных ошибок или отсутствия значений.

  • A. Монады — это встроенные типы данных в Python для хранения последовательностей чисел.

  • B. Монады — это способ организации кода, чтобы использовать больше переменных, не изменяя производительность программы.

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

  • D. Монады - это объекты, которые используются для описания иерархии классов в Python.

Вопрос 73. Как вы можете получить количество вхождений значения в списке Python?

  • A. count()

  • B. length()

  • C. size()

  • D. number()

Вопрос 74. В Python, что делает оператор with при работе с ресурсами, такими как файлы?

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

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

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

  • D. Он используется для переименования файла.

Вопрос 75. Что такое ленивая оценка (lazy evaluation) в Python, и как она работает? Приведите пример, демонстрирующий использование ленивых вычислений.

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

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

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

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

Вопрос 76. Что делает следующий код Python, реализующий алгоритм сортировки?

  • A. Сортирует массив в обратном порядке.

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

  • C. Сортирует массив в порядке убывания с помощью алгоритма сортировки вставками.

  • D. Удаляет дубликаты из массива и сортирует его.

Вопрос 77. Какие существуют основные способы копирования списков в Python, и в чем разница между поверхностным и глубоким копированием? Приведите примеры, демонстрирующие различные способы копирования и их эффект.

  • A. В Python есть только один способ копирования списков - с использованием метода copy(), все остальные способы создают ссылки на исходный список.

  • B. Существуют способы поверхностного копирования ([:], list(), copy()) и глубокого копирования (deepcopy()). Поверхностное копирование создает новый список, но элементы вложенных списков остаются ссылками на оригинальный список. Глубокое копирование создает полностью независимые копии списков, включая все вложенные объекты.

  • C. Существуют три способа копирования списков: [:], list() и copy(), которые выполняют глубокое копирование.

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

Вопрос 78. Каково основное назначение функции zip() в Python?

  • A. Для сжатия файлов.

  • B. Для одновременного итерирования по двум и более последовательностям.

  • C. Для извлечения файлов.

  • D. Для кодирования данных.

Вопрос 79. Что делает оператор is в Python?

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

  • B. Сравнивает значения двух переменных.

  • C. Гарантирует, что типы переменных идентичны.

  • D. Преобразует тип объекта в целое число.

Вопрос 80. В Python, что возвращает функция globals()?

  • A. Список всех глобальных символов.

  • B. Словарь, представляющий текущую глобальную таблицу символов.

  • C. Значение последнего выражения, вычисленного интерпретатором.

  • D. Список всех локальных символов.


Ответы

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

Объяснение:

Метод split() в Python используется для разделения строки на подстроки на основе разделителя, который по умолчанию является пробельным символом.

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

  • Вариант B не верен: strip() используется для удаления пробелов в начале и конце строки.

  • Вариант C не верен: Объединение строк выполняется с помощью оператора + или join().

  • Вариант D не верен: Для переворота строки используется метод reversed(), либо срезы [::-1].

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

  1. Метод split() применяется к строке.

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

  3. Он разделяет строку на подстроки в местах разделителя.

  4. Он возвращает список, содержащий эти подстроки.

  5. Если разделитель не указан, split() будет использовать все пробельные символы как разделители.

Примеры:

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

  • Строка "apple banana orange" была разделена на список из трех слов ['apple', 'banana', 'orange'], с помощью разделителя "пробел"

  • Строка "apple,banana,orange" была разделена на три части по запятой ,.

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

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

Объяснение:

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

  • Ключевые концепции монад:

    • Контейнеры: Монады обычно представляют собой контейнеры для значений.

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

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

  • Монада Maybe (или Option):

    • Используется для представления значения, которое может быть либо существует, либо нет (то есть, это либо значение определенного типа, либо "ничего" (None)).

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

    • Помогает избежать исключений, если какой-то из шагов вычислений может вернуть невалидное значение.

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

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

  1. class Maybe: Создаем класс, который реализует Maybe монаду.

  2. __init__: конструктор класса.

  3. bind(self, func): метод, который связывает Maybe с другой функцией. Если текущее значение Maybe это None, то возвращает Maybe() (а значит None). В противном случае - вызовет функцию func c текущим значением.

  4. safe_divide(x, y): Функция, которая безопасно делит x на y, возвращая Maybe(), если y равен нулю.

  5. result: Инициализируется с Maybe(10) , и затем выполняется цепочка операций, где каждый bind связывает результат предыдущего шага со следующим вычислением.

  6. Так как деление на 0 в результате вернет None , и все последующие значения bind вернут None, то в итоге result.value будет равен None.

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

  • A. Монады — это встроенные типы данных в Python для хранения последовательностей чисел: Неправильно. Монады - это абстрактная концепция, а не встроенный тип данных.

  • B. Монады — это способ организации кода, чтобы использовать больше переменных, не изменяя производительность программы.: Неправильно. Монады не для управления количеством переменных.

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

  • D. Монады - это объекты, которые используются для описания иерархии классов в Python.: Неправильно.

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

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

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

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

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

Объяснение:

Для подсчета количества вхождений определенного значения в списке Python используется метод count().

  • Вариант A верен: Метод count() возвращает количество вхождений указанного значения в списке.

  • Вариант B не верен: length() или len() используется для получения общей длины (количества элементов) списка, а не количества вхождений конкретного значения.

  • Вариант C не верен: size() не является методом для списков в Python.

  • Вариант D не верен: number() не является методом для списков в Python.

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

  1. Метод count() вызывается у списка.

  2. Он принимает один аргумент - значение, количество вхождений которого нужно подсчитать.

  3. Он возвращает целое число, представляющее количество раз, которое указанное значение встречается в списке.

Пример:

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

  • my_list.count(2) возвращает 3, так как число 2 встречается три раза в списке.

  • my_list.count(6) возвращает 0, так как число 6 не встречается в списке.

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

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

Объяснение:

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

  • Вариант A не верен: with гарантирует закрытие файла, а не его постоянное открытие.

  • Вариант B верен: with автоматически закрывает файл после использования.

  • Вариант C не верен: with не используется для открытия файлов в режиме записи, эта операция выполняется при помощи параметра mode="w" в функции open().

  • Вариант D не верен: with не используется для переименования файлов, для этого применяют модуль os.

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

  1. with работает с "менеджером контекста" (context manager), который гарантирует корректное управление ресурсами.

  2. Когда выполнение достигает оператора with, вызывается метод __enter__ объекта менеджера контекста (например, файл открывается).

  3. После выполнения кода внутри with блока, вызывается метод __exit__, гарантируя закрытие файла, независимо от того, возникли ли ошибки в блоке with.

Пример:

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

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

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

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

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

Объяснение:

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

  • Основные концепции ленивой оценки:

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

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

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

    • Использование генераторов и итераторов: Python позволяет реализовать ленивые вычисления с помощью генераторов и итераторов.

  • Генераторы и ленивые вычисления:

    • Генераторы — это специальные функции, которые используют yield для возвращения значений по одному за раз.

    • Генераторы вычисляют следующее значение только когда вызывается функция next или происходит итерация в цикле for, а не вычисляют все значение сразу.

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

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

  • fibonacci(): Генераторная функция, которая генерирует бесконечную последовательность чисел Фибоначчи.

    • while True: бесконечный цикл

    • yield a: возвращает следующее число Фибоначчи и приостанавливает выполнение функции.

  • fib_gen = fibonacci(): Создает объект-генератор.

  • for i in range(10): Цикл, который выполнится 10 раз.

  • next(fib_gen): Вызывает генератор, заставляя его вычислить и вернуть следующее значение Фибоначчи.

  • Генератор генерирует значения по запросу и только когда они нужны циклу.

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

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

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

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

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

  • D. Ленивая оценка - это метод ускорения вычислений путем выполнения их параллельно.: Неправильно.

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

  • Ленивая оценка позволяет экономить ресурсы за счет отложенных вычислений.

  • Генераторы и итераторы позволяют реализовывать ленивую оценку в Python.

Таким образом, правильным ответом является B. Ленивая оценка - это стратегия вычислений, при которой выражение вычисляется только тогда, когда его значение необходимо. В Python это может быть реализовано с помощью генераторов и итераторов.

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

Объяснение:

Предоставленный код реализует алгоритм пузырьковой сортировки (bubble sort).

  • Алгоритм пузырьковой сортировки:

    • Сравнивает соседние элементы массива.

    • Если текущий элемент больше следующего, то они меняются местами.

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

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

  • Описание кода:

    • bubble_sort(arr): Функция, которая принимает массив arr в качестве аргумента.

    • n = len(arr): Определяет длину массива.

    • for i in range(n): Внешний цикл проходит по массиву n раз.

    • for j in range(0, n-i-1): внутренний цикл проходит до границы отсортированной части массива.

    • if arr[j] > arr[j+1]: проверяет, нужно ли менять соседние элементы местами.

    • arr[j], arr[j+1] = arr[j+1], arr[j]: меняет соседние элементы местами.

    • return arr: возвращает отсортированный массив.

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

  • A. Сортирует массив в обратном порядке: Неправильно.

  • B. Сортирует массив в порядке возрастания с помощью алгоритма пузырьковой сортировки: Правильно.

  • C. Сортирует массив в порядке убывания с помощью алгоритма сортировки вставками: Неправильно.

  • D. Удаляет дубликаты из массива и сортирует его: Неправильно.

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

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

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

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

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

Объяснение:

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

  1. Поверхностное копирование (Shallow Copy):

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

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

    • Способы создания поверхностной копии:

      • Срез ([:]): new_list = old_list[:]

      • Функция list(): new_list = list(old_list)

      • Метод copy(): new_list = old_list.copy()

  2. Глубокое копирование (Deep Copy):

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

    • Изменения в глубоко скопированном списке не повлияют на исходный список и наоборот.

    • Используется функция deepcopy() из модуля copy.

      • import copy; new_list = copy.deepcopy(old_list)

Примеры кода (поверхностное копирование):

Вывод:

Примеры кода (глубокое копирование):

Вывод:

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

  • A. В Python есть только один способ копирования списков - с использованием метода copy(), все остальные способы создают ссылки на исходный список: Неправильно.

  • B. Существуют способы поверхностного копирования ([:], list(), copy()) и глубокого копирования (deepcopy()). Поверхностное копирование создает новый список, но элементы вложенных списков остаются ссылками на оригинальный список. Глубокое копирование создает полностью независимые копии списков, включая все вложенные объекты: Правильно.

  • C. Существуют три способа копирования списков: [:], list() и copy(), которые выполняют глубокое копирование: Неправильно, эти способы выполняют только поверхностное копирование.

  • D. В Python списки не могут быть скопированы, их можно только переименовать: Неправильно.

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

  • Поверхностное копирование создает новый список, но не создает новые объекты для вложенных изменяемых элементов (их ID не меняется).

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

Таким образом, правильным ответом является B. Существуют способы поверхностного копирования ([:], list(), copy()) и глубокого копирования (deepcopy()). Поверхностное копирование создает новый список, но элементы вложенных списков остаются ссылками на оригинальный список. Глубокое копирование создает полностью независимые копии списков, включая все вложенные объекты.

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

Объяснение:

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

  • Вариант A не верен: Функция zip() не занимается сжатием файлов.

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

  • Вариант C не верен: zip() не предназначена для извлечения файлов.

  • Вариант D не верен: zip() не занимается кодированием данных.

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

  1. Функция zip() принимает в качестве аргументов два или более итерируемых объекта.

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

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

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

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

  1. Параллельная итерация: Когда нужно перебрать несколько последовательностей одновременно, имея доступ к элементам с одинаковым индексом.

  2. Создание словарей: Для создания словаря из двух списков, один из которых является ключами, а другой - значениями.

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

  4. Объединение данных: Соединение данных из разных списков в пары или кортежи для дальнейшей обработки.

Пример:

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

  • При итерировании с помощью zip() , пары элементов из names и ages выдаются на каждой итерации.

  • zip(names, ages) вернет пары только до тех пор пока не закончится наименьший итерабельный объект.

  • В словаре каждый ключ будет из списка names, а значение из списка ages

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

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

Объяснение:

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

  • Вариант A верен: Оператор is проверяет идентичность объектов, а не их значения.

  • Вариант B не верен: Для сравнения значений используется оператор ==.

  • Вариант C не верен: is не проверяет типы, а только идентичность объектов.

  • Вариант D не верен: is не занимается преобразованием типов.

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

  1. Он сравнивает два объекта (переменные) по их идентичности (то есть, по их расположению в памяти), а не по их значениям.

  2. Возвращает True, если оба операнда ссылаются на один и тот же объект в памяти.

  3. Возвращает False в противном случае.

Важные отличия от ==:

  • ==: Проверяет равенство значений объектов. Возвращает True, если значения объектов равны.

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

Пример:

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

  • a и b имеют одинаковые значения, но являются разными объектами в памяти, поэтому == возвращает True, а is возвращает False.

  • a и c указывают на один и тот же объект, поэтому и == и is возвращают True

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

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

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

Объяснение:

В Python функция globals() возвращает словарь, представляющий текущую глобальную таблицу символов.

  • Вариант A не верен: globals() возвращает словарь, а не список.

  • Вариант B верен: globals() возвращает словарь с информацией о глобальных символах.

  • Вариант C не верен: Для получения значения последнего выражения используется _

  • Вариант D не верен: Для локальных переменных используется locals()

Что такое глобальная таблица символов:

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

Как использовать globals():

Функция globals() может быть полезна для:

  • Интроспекции: Для получения информации о глобальных переменных, функций и классов.

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

Пример:

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

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

  • При вызове globals() внутри my_function(), словарь покажет те же глобальные переменные.

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


Удачи! Подпишись, чтобы не пропустить

Показать полностью 14
6

Стоит ли сразу бросать работу ради программирования?

Когда только начинаешь учить код, кажется, что надо бросить всё и сосредоточиться только на программировании. Я тоже думал так. Но реальность оказалась сложнее. Давай разберёмся, стоит ли уходить с работы ради IT или лучше совмещать.

1. Учёба — это не заработок

Хотя курсы и блогеры обещают, что через 3-6 месяцев можно зарабатывать, это не у всех так. Можно выучить основы, но стабильный доход приходит позже.

Что делать:

Не спеши увольняться, пока не появятся реальные источники дохода.

Пробуй брать небольшие заказы, чтобы проверить, готов ли ты зарабатывать кодом.

2. Давление денег убивает мотивацию

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

Что делать:

Используй текущую работу как подушку безопасности.

Учись параллельно, без страха, что деньги закончатся.

3. Можно совмещать, если правильно распределять время


Я работаю и учусь, и это непросто. Но с расписанием можно выделять 1-2 часа в день, а не пытаться поглотить всё за неделю.

Что делать:

Определи, сколько часов в день можешь выделять на код.

Учись регулярно, даже если это 30 минут в день.

4. Когда можно уволиться?

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

Что делать:

Начинай искать подработку на фрилансе, пока учишься.

Работай над портфолио, чтобы быстрее выйти на доход.

Я сам прохожу этот путь и делюсь своим опытом в Telegram-канале. Присоединяйся, там проще понять, как реально перейти в IT!

Показать полностью
12

Как не бросить программирование на полпути

Ты начал учить Python, вдохновился идеей стать разработчиком, но через пару месяцев мотивация пропала? Такое случается со многими. Я тоже проходил через это, но нашёл способы не слиться. Делюсь ими.

1. Перестань гнаться за быстрыми результатами
Я думал, что через пару месяцев смогу зарабатывать на коде. Но реальность другая: путь в IT — это марафон, а не спринт. Когда ожидания завышены, разочарование неизбежно.

Что делать:
- Принимай, что прогресс медленный, но он есть.
- Радуйся маленьким победам (разобрался с циклами? Отлично!).

2. Учись не только по курсам, но и на практике
Частая ошибка новичков — бесконечно смотреть уроки, но ничего не писать. Так учёба превращается в рутину, и интерес пропадает.

Что делать:
- Начни свой мини-проект (бот для Telegram, парсер, калькулятор).
- Выкладывай код на GitHub, чтобы видеть свой рост.

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

Что делать:
- Найди IT-сообщество или чат для начинающих.
- Делись успехами и неудачами, это нормализует процесс.
- Я веду Telegram-канал, где рассказываю о своём пути в IT. Присоединяйся, там проще не сдаться!

Главное — не останавливайся. Даже если кажется, что топчешься на месте, ты всё равно движешься вперёд.

Показать полностью
1

Здравствуйте, я начинающий писатель игры в тг

Я начал писать игру в тг, военную стратегию.
Наша команда из Новороссии, и изначально был проект просто тыкалки на типа камень ножницы бумага, тематика СВО в противостоянии России и НАТО.

Но со временем аппетиты росли, и теперь проект должен стать сильным и многогранный. Для всех сторон.

Постараюсь писать отчёт о проделанной работе. На данный момент мы имеем:

**🌍 Глобальная механика:**
1. **Фракционная война:** 5 уникальных фракций с бонусами
2. **Клановая система:** Создание/вступление в кланы до (?) человек
3. **Динамические события:** Сражения за города
4. **Ресурсная экономика:** Топливо, боеприпасы, припасы(?)
5. **PVP-режим:** Захват и защита городов между кланами

**⚔️ Боевая система:**
- Комбинированные атаки кланов
- Реальные последствия потерь (ранения/дезертирство)
- Динамическая защита городов
- Система боевого истощения (ресурс)

**🏭 Базовая механика:**
- ñ типов построек с уникальными бонусами(?)
- Прокачка технологий клана(?)
- Управление ресурсами городов(?)
- Автоматическое восстановление

**📊 Прогрессия:**
- Личная: Уровни юнитов/базы
- Клановая: Общая казна(?)
- Глобальная: Рейтинг кланов/фракций

**🎮 Игровой цикл:**
1. Развитие базы и юнитов
2. Участие в PvE-боях за ресурсы(?)
3. Организация/вступление в клан
4. Стратегические атаки на города
5. Защита захваченных территорий
6. Участие в глобальных событиях

**⚖️ Баланс:**
- Лимит на размер клана
- Штрафы за частые атаки
- Бонусы защиты для владельцев городов
- Ежедневный лимит на участие в событиях

Очень нужна ваша помощь. Что нужно добавить сделать и удалить, чтобы вы хотели видеть в такой игре?

Показать полностью 3
6

Python

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

Условие: есть 5-этажный дом по 4 квартиры на этаже, из 5 подъездов. Всего 100 квартир. Нужно по номеру квартиры определить подъезд и этаж. Вчера у меня формула работала, сегодня добавил другое условие , и подъезд получился дробный. Может кто свежим взглядом посмотрит код?

nomer = 15
if nomer//20!=0:
pod=nomer//20+1
et=(nomer - 20*(pod-1))//4+1
print("№ Подъезда:", pod)
print("№ этажа:", et)
elif nomer//20==0:
pod=nomer/20
et=(nomer-20*(pod-1))//4
print("№ Подъезда:", pod)
print("№ этажа:", et)

Показать полностью
11

Filter: как коты выбирают только вкусные кусочки

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

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

О чём речь?

filter — это встроенная функция Python, которая позволяет отфильтровать элементы из коллекции (списка, кортежа и т.д.) на основе заданного условия. Это как если бы вы дали коту список продуктов, а он выбрал только рыбу.

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

Функция filter принимает два аргумента:

🐾 Функция: условие, которое проверяет каждый элемент.

🐾 Итерируемый объект: коллекция, из которой нужно выбрать элементы.

Синтаксис:

filter(function, iterable)

  • function должна возвращать True для элементов, которые нужно оставить, и False для тех, которые нужно исключить.

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

Фильтруем котов

Допустим, у нас есть список котов, и мы хотим оставить только тех, чьи имена начинаются с буквы "B".

Здесь filter оставил только тех котов, чьи имена начинаются с "B".

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

🐾 Напишите функцию, которая возвращает True или False для каждого элемента.

🐾 Передайте эту функцию и коллекцию в filter.

🐾 Преобразуйте результат в список, кортеж или другой тип данных.

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

1. Фильтрация чисел

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

Здесь filter оставил только чётные числа.

2. Фильтрация строк

Представьте, что у вас есть список продуктов, и вы хотите оставить только те, которые содержат слово "fish".

Теперь у нас остались только продукты с рыбой.

3. Использование lambda

Вместо написания отдельной функции можно использовать lambda.

lambda делает код короче и удобнее.

4. Фильтрация с вложенными структурами

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

Теперь у нас остались только коты, которые любят рыбу.

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

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

✅ Вам нужно выбрать элементы из коллекции на основе условия.

✅ Вы хотите сделать код лаконичным и читаемым.

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

❌ Условие слишком сложное (в таких случаях лучше использовать цикл for).

❌ Вам нужно изменить элементы (используйте map).

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

🐾 Плюсы:

✅ Удобен для фильтрации данных.

✅ Делает код лаконичным.

✅ Работает с любыми итерируемыми объектами.

🐾 Минусы:

❌ Может быть сложным для понимания, если условие слишком запутанное.

❌ Возвращает объект filter, который нужно преобразовывать в список или другой тип данных.

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

🐍 Обработка данных: фильтрация строк, чисел или объектов.

📦 Работа с API: выбор нужных данных из ответа.

🛠 Анализ текстов: фильтрация слов или символов.

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

Поздравляю всех с пятницей, окончанием трудовой недели и окончанием первого месяца этого года! Желаю всем продуктивности и результативности! Для этого приглашаю решить задачку на https://t.me/pytonism ))

Показать полностью 5
Отличная работа, все прочитано!