Как использовать функцию partial?

Пытаюсь решить задачу (https://stepik.org/lesson/63306/step/8)

Напишите функцию con_class, которая принимает целое положительное число n и возвращает итерируемый объект (iterable), содержащий все делящиеся на n целые числа в промежутке от 0 до 100 (обе границы включены).

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

Примеры ожидаемого поведения


for num in con_class(101):

    print(num)

0 # из чисел 0, 1, 2, ..., 100 только 0 делится на 101

Какую встроенную функцию имел ввиду автор? divmod? Мое решение ниже

from functools import partial

con_class = partial(divmod, 101, n=int(input()))
Failed test #1 of 90. Runtime error

Error:
Traceback (most recent call last):
  File "jailed_code", line 6, in <module>
    print(list(con_class(int(input()))))
EOFError: EOF when reading a line

Ответы (2 шт):

Автор решения: CrazyElf
from functools import partial

con_class = partial(divmod, 101, n=int(input()))
  • Во-первых вы не должны использовать input в своей функции, ваша функция должна просто принимать аргумент обычным образом в скобочках con_class(n). Именно использованием input вызвана ошибка EOFError: EOF when reading a line - вы таким образом забрали ввод, который предназначался для проверочной обвязки, которая проверяет работу вашей функции
  • Вы должны передать в partial саму функцию, а также какую-то часть её аргументов. При этом у функции divmod нет именованных аргументов вообще и в частности аргумента n=, так что вы написали что-то непонятное. 101 передастся первым аргументом в divmod, а с n= будет ошибка.
  • На самом деле я тоже не очень понимаю, что они от вас хотели в этой хитрой формулировке, но в любом случае то, что вы написали, не выполняет задачу фильтрации чисел по условию задач. Попробуйте сначала решить задачу не обращая внимание на эту формулировку, просто хоть как-нибудь. А потом уже можно будет подумать, как туда применить partial или lambda, например.
→ Ссылка
Автор решения: ootel
from functools import partial

con_class = partial(range, 0, 101)
→ Ссылка