Python: задачки и вопросы
Kanalga Telegram’da o‘tish
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/media
Ko'proq ko'rsatish6 949
Obunachilar
-224 soatlar
-127 kun
-6230 kun
Postlar arxiv
Объяснение:
Первый шаг к пониманию того, что происходит в этом странном коде — это взглянуть на то, что нам говорит PEP 380⁴⁰ об использовании return с yield. Кратко говоря, return expr в генераторе вызывает исключение StopIteration(expr) при выходе из генератора.
В данном случае исключение StopIteration происходит при выполнении функции my_func(), когда используется оператор return. Это исключение перехватывается вызовом функции list() в конце кода.
Когда происходит исключение, значение ["Python"] не возвращается, а функция list() возвращает пустой список.
Если вы хотите получить ["Python"] из этого кода, нужно изменить вызов функции, используя next() и обернув его в обработчик исключений:
def my_func(value):
if value == 5:
return ["Python"]
else:
yield from range(value)
try:
next(my_func(5))
except StopIteration as exception:
print(f"StopIteration пойман! {exception.value = }")
Этот код удаляет вызов list(), который автоматически перехватывает исключение StopIteration, и использует функцию next(). Функция next() не перехватывает исключение StopIteration, поэтому необходимо обернуть этот вызов конструкцией try/except, чтобы самостоятельно обработать это исключение. А для получения значения из исключения можно воспользоваться атрибутом value объекта exception.Объяснение:
Функция
func() реализует рекурсивное вычисление факториала числа n. Факториал числа определяется как произведение всех натуральных чисел от 1 до n включительно. Факториал 0 равен 1 по определениюОбъяснение:
GIL (Global Interpreter Lock) — это механизм, который не позволяет более чем одному потоку одновременно выполнять нативный код Python
Это создаёт проблемы с производительностью в многопоточных программах, так как потоки не могут выполняться параллельно на разных ядрах процессора
GIL (Global Interpreter Lock) в Python — это механизм,
Объяснение:
sum(iterable, start) — функция sum() принимает на вход лишь итерируемые объекты, то есть объекты, которые способны возвращать элементы по одному
Так как ни int, ни float таковыми не являются, то у нас здесь ошибкаОбъяснение:
Что же возвращает метод строки
find()? Самый быстрый способ это узнать — прочитать документацию. Согласно документации по Python, если подстрока не найдена, find() возвращает -1.
С этим знанием в голове, попробуйте выполнить следующий код:
print(bool(-1)) # выведет:True
Как видите, при преобразовании -1 в логическое значение (Boolean), оно возвращается как True.
Поэтому в приведенном выше коде, когда подстрока "C++" отсутствует, метод find() возвращает -1,
что оценивается как True, и поэтому выводится: "Found C++!".Объяснение:
В квизе есть ошибка! Конечно, нужно немного знать язык, чтобы её увидеть. Но анализ кода и диагностика проблем — ВАЖНАЯ часть становления крутым разработчиком.
Если вы запустите этот код в Python 3.10 или выше, Python постарается указать вам, что не так с кодом:
>>> x = True
>>> y = False
>>> print(x == not y)
File "<stdin>", line 1
print(x == not y)
^^^
SyntaxError: invalid syntax
Как видите, что-то не так с оператором not в приведённом выше коде.
Можно исправить код так:
>>> x = True
>>> y = False
>>> print(x != y)
True
Здесь используется != для проверки, что x не равно y.
Другой способ "исправить" этот код — добавить дополнительные скобки:
>>> x = True
>>> y = False
>>> print(x == (not y))
True
В этом примере "not y" находится в скобках и сравнивается с x. Оба решения — хороший способ заставить код работать.Принимать? А может лучше предпринимать?
Ну то есть стать ТехПредом — предпринимателем, который умеет проектировать, разрабатывать и выводить на рынок технологичные продукты.
Научиться этому вы можете в онлайн-магистратуре МФТИ «Технологическое предпринимательство». Выпускники ведут значимые и интересные проекты в самых разных сферах, от ИТ до биомедицины. Вот пара примеров:
— прибор ранней диагностики онкозаболеваний,
— инструмент для контроля ИТ-безопасности,
— разработка и запуск на европейский рынок робота-садовника,
— выведение наклонного рабочего места на международный рынок.
А ещё выпускники становятся продакт-менеджерами и руководителями R&D отделов, CEO и CTO.
Хотите работать эффективнее или примерить роль основателя бизнеса?
А будет ли конкретно в вашей ситуации польза от сообщества ТехПреда МФТИ? Можно обсудить с преподавателями, а заодно получить полезные контакты студентов и выпускников. Для этого напишите нам в Telegram.
это #партнёрский пост
