Задача 3 Всемирно известная компания "Cucumber" выпускает мобильные гаджеты и устройства для «умного дома». Но время идёт, и компания прекращает поддерживать старые устройства.
Словари mobile_devices и home_devices содержат полный перечень техники производства "Cucumber".
Множество not_supported_devices хранит названия устройств, поддержка которых прекращена.
Ваша программа должна составить словарь result_supported, в котором будут перечислены все устройства, поддержка которых не прекратилась; в словаре должны быть и устройства для «умного дома», и мобильные гаджеты.
Этот словарь будет выведен на печать.
Программа должна напечатать примерно такую строку:
{'cucuLot': 2011, 'cucuMonitor': 2020, 'cucuEar': 2018, ...}
Ход работы:
создать из ключей двух словарей единый сет all_devices;
создать сет result_devices, содержащий разность сетов all_devices и not_supported_devices; это будет перечень названий устройств, поддержка которых не прекращена;
перебрать сет result_devices в цикле: for device in result_devices:
Для каждого элемента device провести проверку: есть ли в словаре mobile_devices элемент с ключом device. Если есть — то добавить элемент словаря mobile_devices[device] в итоговый словарь result_supported.
Провести такую же проверку для словаря home_devices, и добавить обнаруженные элементы home_devices[device] в словарь result_supported.
А что в коде?
Функция union_devices() должна получить полный перечень названий всех устройств вернуть его как объект типа set.
Функция difference_device() должна найти разницу между полным перечнем всех устройств и сетом not_supported_devices; функция должна вернуть сет, в котором содержатся отличающиеся элементы двух исходных сетов.
Функция is_supported() должна проверить, есть ли в словаре mobile_devices или в словаре home_devices ключ, переданный в аргументе; если есть — добавить в результирующий словарь элемент с этим ключом.
программа(https://paste.ofcode.org/ZQZJzgszuCe7ms6czgFaWX)
Шаги решения задачи:
1. Создать сет all_devices, содержащий ключи из словарей mobile_devices и home_devices. Для этого нужно использовать функцию union_devices().
2. Создать сет result_devices, содержащий разность сетов all_devices и not_supported_devices. Для этого нужно использовать функцию difference_device().
3. Итерироваться по сету result_devices с помощью цикла for: for device in result_devices.
4. Провести проверку для каждого элемента device:
a. Проверить, есть ли элемент с ключом device в словаре mobile_devices. Если есть, добавить элемент словаря mobile_devices[device] в результатный словарь result_supported. Для этого используйте функцию is_supported().
b. Проверить, есть ли элемент с ключом device в словаре home_devices. Если есть, добавить элемент словаря home_devices[device] в результатный словарь result_supported. Для этого также используйте функцию is_supported().
5. Напечатать полученный словарь result_supported.
Код программы должен быть написан в функции main() и должен содержать вызовы необходимых функций для решения задачи.
Вот подробный код решения задачи:
```python
def union_devices():
# Функция для получения полного перечня устройств
all_devices = set(mobile_devices.keys()).union(set(home_devices.keys()))
return all_devices
def difference_device():
# Функция для нахождения разницы между двумя set
diff_devices = all_devices.difference(not_supported_devices)
return diff_devices
def is_supported(device):
# Функция для проверки, есть ли элемент с ключом device в словарях mobile_devices или home_devices
result_supported = {}
if device in mobile_devices:
result_supported[device] = mobile_devices[device]
if device in home_devices:
result_supported[device] = home_devices[device]
return result_supported
def main():
# Создание словарей mobile_devices и home_devices
mobile_devices = {'cucuPhone': 2019, 'cucuTab': 2020, 'cucuSmart': 2018}
home_devices = {'cucuLot': 2011, 'cucuMonitor': 2020, 'cucuEar': 2018}
not_supported_devices = {'cucuPhone', 'cucuEar'}
# Создание сета all_devices
all_devices = union_devices()
# Создание сета result_devices
result_devices = difference_device()
# Создание словаря result_supported
result_supported = {}
for device in result_devices:
result_supported.update(is_supported(device))
# Вывод полученного словаря result_supported на печать
print(result_supported)
if __name__ == "__main__":
main()
```
Таким образом, программа будет выводить словарь result_supported, в котором перечислены все устройства, поддержка которых не прекратилась.