Python

Помогите пожалуйста найти ошибку в коде, третий день голову ломаю

Задача такая:
Словари mobile_devices и home_devices содержат полный перечень техники производства "Cucumber".
Множество not_supported_devices хранит названия устройств, поддержка которых прекращена.
Программа должна составить словарь result_supported, в котором будут перечислены все устройства, поддержка которых не прекратилась; в словаре должны быть и устройства для «умного дома», и мобильные гаджеты.
Этот словарь будет выведен на печать.
Программа должна напечатать примерно такую строку:
{'cucuLot': 2011, 'cucuMonitor': 2020, 'cucuEar': 2018, ...}

Сам код:
Mobile_devices = {
'cucuPhone': 2010,
'cucuBlet': 2013,
'cucuClock': 2015,
'cucuEar': 2018,
'cuCube': 2015,
}

home_devices = {
'cucuLot': 2011,
'cucuBlock': 2010,
'cucuWall': 2010,
'cucuMonitor': 2020,
'cucuLamp': 2015,
'cucuTable': 2016,
'cucuTV': 2017,
}

not_supported_devices = {'cucuBlock', 'cucuBlet', 'cucuWall'}

result_supported = {}


# Функция объединяет ключи двух словарей в один set и возвращает его
def union_devices(devices_obj_1, devices_obj_2):
union_set = set(devices_obj_1).union(set(devices_obj_2))
return union_set


# Функция находит разницу двух сетов и возвращает её в виде set
def difference_device(all_devices, not_supported_devices):
diff_set = set(union_devices(devices_obj_1, devices_obj_2).differece(not_supported_devices))
return diff_set


# Функция копирует элементы из исходных словарей в результирующий словарь
def is_supported(dict_devices, device):
if device in dict_devices:
result_supported[device] = dict_devices[device]


# Вызываем union_devices(), чтобы получить полный перечень устройств
all_devices = union_devices(mobile_devices, home_devices)

# В result_devices сохранить сет, который вернёт функция difference_device()
result_devices = difference_device(all_devices, not_supported_devices)

# Перебрать в цикле сет result_devices и для каждого элемента
# дважды вызвать функцию is_supported:
# - с аргументами mobile_devices, device
# - и с аргументами home_devices, device
for device in result_devices:
is_supported(mobile_devices, device)# Тут первый вызов
is_supported(home_devices, device)# Тут второй вызов

print(result_supported)
Sergey Lapa
Sergey Lapa
343
Задача решается в 3 строчки кода:

result_supported = {k: v for k, v in mobile_devices.items() if k not in not_supported_devices}
result_supported.update({k: v for k, v in home_devices.items() if k not in not_supported_devices})
print(result_supported)
Владимир Ярков
Владимир Ярков
72 306
Лучший ответ
Sergey Lapa Спасибо за помощь, всё получилось.
> Помогите пожалуйста найти ошибку в коде

Её не надо искать. Питон сам сообщает, где ошибка:
name 'devices_obj_1' is not defined
в строке
diff_set = set(union_devices(devices_obj_1, devices_obj_2).differece(not_supported_devices))
Понятно, что переменная devices_obj_2 тоже не определена.
Привет, решаю Питон на Яндексе.
Задача не проходится.
Я решил её-но Яндекс не принимает(Ого, тренажёр не смог обработать ваше решение и сломался. Извините, уже чиним.).
Смотрите то, как Яндекс просит-решить ниже №1.
И моё решение ещё ниже-№2.

№1.
Задача 3
Ваша задача — разработать систему для работы сервисного центра всемирно известной компании "Cucumber". Она выпускает мобильные гаджеты и устройства для «умного дома».
Полный перечень техники производства "Cucumber" c указанием модельного ряда содержится в словарях mobile_devices и home_devices.
Каждый день компания присылает перечень устройств, поддержка которых прекращена. Перечень хранится в множестве not_supported_devices.
Задача программы — заполнить словарь result_catalog: в него должны попасть только те устройства, поддержку которых компания не прекратила. Ключами словаря должны быть названия устройств, а значениями — годы выпуска, например, 'cucuEar': 2018.
Выведите на экран строку 'Каталог поддерживаемых девайсов:'; на следующей строке напечатайте словарь result_catalog.
Должно получиться примерно так:
Каталог поддерживаемых девайсов:
{'cucuLot': 2011, 'cucuMonitor': 2020, 'cucuEar': 2018, ...}

mobile_devices = {
'cucuPhone': 2010,
'cucuBlet': 2013,
'cucuClock': 2015,
'cucuEar': 2018,
'cuCube': 2015,
}

home_devices = {
'cucuLot': 2011,
'cucuBlock': 2010,
'cucuWall': 2010,
'cucuMonitor': 2020,
'cucuLamp': 2015,
'cucuTable': 2016,
'cucuTV': 2017,
}

not_supported_devices = {'cucuBlock', 'cucuBlet', 'cucuWall'}

result_catalog = {}



# Допишите функцию выборки поддерживаемого девайса из словаря
def get_supported_catalog(dict_devices, device):
supported_catalog = {}
if device in dict_devices:
...
return supported_catalog


all_devices = ...
supported_devices = ...

for device in ...:
supported_mob_dev = get_supported_catalog(mobile_devices, device)
# Добавьте значение в словарь result_catalog
...
supported_home_dev = get_supported_catalog(home_devices, device)
# Добавьте значение в словарь result_catalog
...


print('Каталог поддерживаемых девайсов: ')
print(result_catalog)

№2.
def get_supported_catalog():
result_catalog = {k: v for k, v in mobile_devices.items() if k not in not_supported_devices}
result_catalog.update({k: v for k, v in home_devices.items() if k not in not_supported_devices})
return result_catalog

result_catalog = get_supported_catalog()

print('Каталог поддерживаемых девайсов: ')
print(result_catalog)