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

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

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

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

Другие наши проекты: https://tprg.ru/media
Download Telegram
Объяснение:

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), где каждая строка файла является элементом этого списка.
Мы используем ______ для добавления данных в файл c:\scores.txt, не удаляя при этом существующее содержимое
Anonymous Quiz
68%
open("c:\\scores.txt", "a")
17%
open("c:\\scores.txt", "rw")
11%
open("c:\\scores.txt", "w")
3%
open("c:\\scores.txt", "x")
Объяснение:

Добавление новой информации в существующий файл не перезаписывая его задача распространённая

Для решения этой задачи используйте открытие файла в режиме 'a' (append), который позволяет добавлять информацию в конец файла, не перезаписывая его текущее содержимое
Каким будет результат выполнения кода выше?
Anonymous Quiz
9%
Hi {name}!
36%
NameError
30%
TypeError
25%
UnboundLocalError
Объяснение:

Когда вы запускаете код, вы получите ошибку TypeError. Если быть точнее, вы увидите что-то следующее:
builtins.TypeError: greetings() missing 1 required positional argument: 'name'


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

Один из способов исправить этот момент — добавить аргумент в вызов функции greetings(). И всё же лучше избегать создания двух функций с одинаковыми именами.
Каким будет результат выполнения кода выше?
Anonymous Quiz
56%
42
17%
9%
None
18%
Error
Объяснение:

Функция func() устанавливает значение атрибута ecole равным 42 и затем возвращает саму себя (функцию func)

Затем в строке print(func().ecole) происходит вызов функции func() и получение её атрибута ecole

Достигается это за счёт атрибута __dict__