Помогите с задачей по Python (Яндекс.Практикум основы Python)
Задача 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 цикла, но система такого ответа не принимает:
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 = {}
for device in mobile_devices:
if device not in not_supported_devices:
result_catalog[device] = mobile_devices[device]
for device in home_devices:
if device not in not_supported_devices:
result_catalog[device] = home_devices[device]
print('Каталог поддерживаемых девайсов: ')
print(result_catalog)
__________________________________
полное решение, принимаемое системой, с моими комментами:
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 = {}
# эта функция проверяет наличие девайса в словаре dict_devices.
# если он есть, она добавляет его в словарь supported_catalog
def get_supported_catalog(dict_devices, device):
supported_catalog = {}
if device in dict_devices:
supported_catalog[device] = dict_devices[device]
return supported_catalog
all_devices = set(mobile_devices).union(set(home_devices))
supported_devices = all_devices.difference(not_supported_devices)
for device in supported_devices: #идем по поддерживаемым девайсам
# если девайс из поддерживаемых присутствует среди ВСЕХ мобильных девайсов,
# он помещается в словарь supported_mob_dev
supported_mob_dev = get_supported_catalog(mobile_devices, device)
# словарь supported_mob_dev добавляется к result_catalog
result_catalog.update(supported_mob_dev)
# то же с домашними девайсами
supported_home_dev = get_supported_catalog(home_devices, device)
result_catalog.update(supported_home_dev)
print('Каталог поддерживаемых девайсов: ')
print(result_catalog)