Python: задачки и вопросы
7.74K subscribers
1.19K photos
1 video
1 file
90 links
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Download Telegram
Каким будет результат выполнения кода выше?
Anonymous Quiz
77%
True
6%
False
16%
Syntax Error
2%
Ничего из вышеперечисленного
Объяснение:

В квизе есть ошибка! Конечно, нужно немного знать язык, чтобы её увидеть. Но анализ кода и диагностика проблем — ВАЖНАЯ часть становления крутым разработчиком.

Если вы запустите этот код в 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. Оба решения — хороший способ заставить код работать.
Каким будет результат выполнения кода выше?
Anonymous Quiz
35%
Found C++!
51%
C++ not found!
13%
Ничего из вышеперечисленного
Объяснение:

Что же возвращает метод строки find()? Самый быстрый способ это узнать — прочитать документацию. Согласно документации по Python, если подстрока не найдена, find() возвращает -1.

С этим знанием в голове, попробуйте выполнить следующий код:
print(bool(-1)) # выведет:True


Как видите, при преобразовании -1 в логическое значение (Boolean), оно возвращается как True.

Поэтому в приведенном выше коде, когда подстрока "C++" отсутствует, метод find() возвращает -1,
что оценивается как True, и поэтому выводится: "Found C++!".
Каким будет результат выполнения кода выше?
Anonymous Quiz
6%
42
70%
42.0
2%
None
23%
Error
Объяснение:

sum(iterable, start) — функция sum() принимает на вход лишь итерируемые объекты, то есть объекты, которые способны возвращать элементы по одному

Так как ни int, ни float таковыми не являются, то у нас здесь ошибка
Каким будет результат выполнения кода выше?
Anonymous Quiz
45%
PlayStation5
2%
5
37%
PlayStation
16%
Error
Объяснение:

GIL (Global Interpreter Lock) — это механизм, который не позволяет более чем одному потоку одновременно выполнять нативный код Python

Это создаёт проблемы с производительностью в многопоточных программах, так как потоки не могут выполняться параллельно на разных ядрах процессора
Каким будет результат выполнения кода выше?
Anonymous Quiz
8%
720
69%
120
9%
5
13%
Error
Объяснение:

Функция func() реализует рекурсивное вычисление факториала числа n. Факториал числа определяется как произведение всех натуральных чисел от 1 до n включительно. Факториал 0 равен 1 по определению
Каким будет результат выполнения кода выше?
Anonymous Quiz
61%
["Python"]
15%
[0, 1, 2, 3, 4]
7%
[]
16%
Ничего из вышеперечисленного
Объяснение:

Первый шаг к пониманию того, что происходит в этом странном коде — это взглянуть на то, что нам говорит 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.
Объяснение:

Метод readlines() открывает файл и считывает все строки в виде списка, где каждая строка является элементом этого списка:

Пример:
with open('example.txt', 'r') as file:
lines = file.readlines()
print(lines)


Если файл example.txt содержит:
Hello
World


То результат выполнения будет:
['Hello\n', 'World\n']

Таким образом, метод readlines() возвращает список строк (line), где каждая строка файла является элементом этого списка.