G. Делители

Вашему решению будет предоставлено множество numbers.

Продумайте выражение для генерации словаря содержащего информацию о делителях каждого из заданных чисел.

Примечание

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

Пример

Ввод

numbers = {1, 2, 3, 4, 5}

Вывод

{1: [1], 2: [1, 2], 3: [1, 3], 4: [1, 2, 4], 5: [1, 5]}

Ввод

numbers = {15, 49, 36}

Вывод

{15: [1, 3, 5, 15], 36: [1, 2, 3, 4, 6, 9, 12, 18, 36], 49: [1, 7, 49]}

Решение

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

Фактически, нам надо завернуть в списочное выражение следующий код:

Python
result = {}

for number in numbers:
    for divider in range(1, number):
        if number % divider == 0:
            dividers.append(divider)
    result[number] = dividers

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

Посмотреть код

Решение

Python
{number: [divider for divider in range(1, number + 1) if number % divider == 0] for number in numbers}
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии