Главная страница
Навигация по странице:

  • Вариант 1. При помощи операторов

  • Вариант 2. При помощи методов

  • Самостоятельная работа Задание 1.

  • Задание 2.

  • Практическая работа. Множества. Решение def to set(element) st set(element) return st, len(st) # Тесты print(to set('я обычная строка'))


    Скачать 19.79 Kb.
    НазваниеРешение def to set(element) st set(element) return st, len(st) # Тесты print(to set('я обычная строка'))
    Дата28.02.2022
    Размер19.79 Kb.
    Формат файлаdocx
    Имя файлаПрактическая работа. Множества.docx
    ТипРешение
    #376182

    Практическая работа. Множества


    1. Рассмотреть приведенные примеры


    Пример 1
    На входе функция to_set() получает строку или список чисел. Преобразуйте их в множество. На выходе должно получиться множество и его мощность. Список чисел или строка преобразуются в множество без возможных ошибок. Нужно просто обернуть их в конструктор и воспользоваться методом len() для получения ответа.
    Решение:

    def to_set(element):

    st = set(element)

    return st, len(st)
    # Тесты
    print(to_set('я обычная строка'))

    print(to_set([4, 5, 4, 6, 2, 9, 11, 3, 4, 2]))
    Пример 2
    Имеется список с произвольными данными. Поставлена задача преобразовать его в множество. Если какие-то элементы нельзя хешировать, то пропускаем их. Функция list_to_set() выводит на печать получившееся множество.
    При решении придется проверять каждый элемент списка на хешируемость. Для этого воспользуемся классом Hashable из модуля collections.
    Решение:
    from collections.abc import Hashable

    def list_to_set(lst):

    st = {item for item in lst if isinstance(item, Hashable)}

    print(st)
    # Тесты

    list_to_set([1, [2]])

    list_to_set([1, [2], 55, 55, {1, 2, 3}, (2, 2), 'string', 5.11])
    Пример 3
    На основании 3 исходных множеств (передаются в качестве аргументов функции diff()) требуется написать функцию, которая будет возвращать либо симметричную разность, либо просто разность (если дополнительный аргумент функции symmetric имеет значение False) приведенных объектов в порядке: 1-ое множество, 2-ое множество, 3-е множество.
    Решение:
    Разность двух множеств показывает уникальные элементы первого, которых нет во втором. Симметричная разность выводит уникальные компоненты обоих контейнеров, исключая общие для них. Решение можно провести как с помощью операторов, так и методов.
    Вариант 1. При помощи операторов
    def diff(set_1, set_2, set_3, symmetric=True):

    if symmetric:

    return set_1 ^ set_2 ^ set_3

    return set_1 - set_2 - set_3
    Вариант 2. При помощи методов
    def diff(set_1, set_2, set_3, symmetric=True):

    if symmetric:

    return set_1.symmetric_difference(set_2).symmetric_difference(set_3)

    return set_1.difference(set_2, set_3)
    # Тесты

    set_1 = {3, 4, 5, 6, 20}

    set_2 = {4, 6, 7, 8, 9}

    set_3 = {5, 3, 8, 1}
    print(diff(set_1, set_2, set_3))

    print(diff(set_1, set_2, set_3, asymmetric=False))
    Пример 4
    Напишите функцию superset(), которая принимает 2 множества. Результат работы функции: вывод в консоль одного из сообщений в зависимости от ситуации:

    1 - «Супермножество не обнаружено»

    2 – «Объект {X} является чистым супермножеством»

    3 – «Множества равны»
    Для написания функции необходимо выявить подчиненность множеств, наличие чистого супермножества. При помощи print() вывести ответ по результатам оценки.
    Решение:

    def superset(set_1, set_2):

    if set_1 > set_2:

    print(f'Объект {set_1} является чистым супермножеством')

    elif set_1 == set_2:

    print(f'Множества равны')

    elif set_1 < set_2:

    print(f'Объект {set_2} является чистым супермножеством')

    else:

    print('Супермножество не обнаружено')
    # Тесты

    set_1 = {1, 8, 3, 5}

    set_2 = {3, 5}

    set_3 = {5, 3, 8, 1}

    set_4 = {90, 100}
    superset(set_1, set_2)

    superset(set_1, set_3)

    superset(set_2, set_3)

    superset(set_4, set_2)

    1. Самостоятельная работа

    Задание 1. Получить множества С [1..13] и D [5..20].

    А) Найти пересечение множеств d и c. Ответом должно быть множество [5..13]

    Б) Найти отрицание множеств d и c. Ответом должно быть множество …

    С) Найти отрицание множеств c и d. Ответом должно быть множество … (Ответы в 3 и 4 пунктах не совпали?)

    Д) Найти объединение этих множеств. Ответом должно быть множество …

    Задание 2. Подсчитать общее количество цифр и знаков '+', '-', и '*', входящих в строку s.
    Полезные ссылки

    1. https://all-python.ru/osnovy/mnozhestva.html


    написать администратору сайта