Курс 3.4 · Раздел 04 · Урок 4.10

Задачи для самостоятельной работы

Разберём тему на понятных примерах и закрепим её практикой.

Ученик и ИИ-наставник изучают тему «Задачи для самостоятельной работы»
4.10 — Задачи для самостоятельной работы

Материал урока

Задача 1: ИИ в облаке и на устройстве (1\_Cloud\_device.py)

В мире искусственного интеллекта существуют разные варианты работы ИИ: одни модели обрабатывают данные в облаке, а другие — на локальных устройствах. Иногда ИИ может сочетать оба подхода.

Создай два класса:

  1. CloudAI — класс для ИИ, работающего в облаке, который имеет метод all\_about\_me() и возвращает строку: "I'm a Cloud AI, and I'm processing data online".
  2. LocalAI — класс для ИИ, работающего на локальном устройстве, также с методом all\_about\_me(), возвращающим строку: "I work on local devices and process data offline".

Также создай два производных класса, наследующихся от обоих базовых:

  1. HybridAI — класс для ИИ, который может работать и в облаке, и на устройстве.
  2. EdgeAI — класс для ИИ, который в основном работает на устройствах, но может взаимодействовать с облаком.

В производных классах не следует переопределять методы. Объяви HybridAI(CloudAI, LocalAI), а EdgeAI(LocalAI, CloudAI): тогда результат определит MRO, который нужно проверить вызовом mro().

Пример ввода и вывода:

cloud_ai = CloudAI()

local_ai = LocalAI()

hybrid_ai = HybridAI()

edge_ai = EdgeAI()



print(cloud_ai.all_about_me())  # I'm a Cloud AI, and I'm processing data online

print(local_ai.all_about_me())  # I work on local devices and process data offline

print(hybrid_ai.all_about_me()) # I'm a Cloud AI, and I'm processing data online

print(edge_ai.all_about_me())   # I work on local devices and process data offline

---

Задача 2: Модули ИИ разного уровня (2\_Level\_modules.py)

Представь, что различные ИИ-модули похожи на уровни сложности задач, которые они решают. Самый простой модуль решает базовые задачи, а самые сложные уже нельзя упростить.

Создай базовый класс AIModel, который при инициализации принимает один аргумент — сложность (уровень сложности задачи).

В базовом классе предоставьте следующие методы:

  1. \_\_str\_\_() — возвращает строку: "AI model, complexity level <уровень сложности>".
  2. get\_complexity() — возвращает уровень сложности.

Создай производный класс AdvancedAIModel, который примет дополнительный аргумент — шаг изменения сложности.

Этот класс реализует дополнительные методы:

  1. previous\_model() — возвращает модель с более высокой сложностью.
  2. next\_model() — возвращает модель с более низкой сложностью; если сложность меньше или равна нулю, возвращается BasicAIModel.

Создай класс BasicAIModel, который наследуется от AdvancedAIModel. Этот класс не может упростить модель дальше, и при вызове метода next\_model() возвращается None.

Пример ввода и вывода:

model = AIModel(10)

print(model)  # AI model, complexity level 10



advanced_model = AdvancedAIModel(10, 2)



print(advanced_model.next_model())  # AI model, complexity level 8

print(advanced_model.previous_model())  # AI model, complexity level 12



basic_model = BasicAIModel(2, 1)



print(basic_model.next_model())  # None

---

Задача 3: Кит — универсальный ИИ (3\_Universal AI.py)

Кит — это ИИ, который может работать как с облачными данными, так и с локальными задачами, но не все функции ему доступны.

Создай два базовых класса:

  1. CloudAI — методы:
  • swim() — обрабатывает облачные данные.
  • dive() — анализирует большие массивы информации.
  • breathe\_with\_gills() — дышит облачными API (возвращает None для кита).
  1. LandAI — методы:
  • walk\_on\_land() — управляет локальными устройствами.
  • breathe\_air() — дышит локальными ресурсами (возвращает None для кита).
  • feed\_cubs() — поддерживает работу нескольких устройств.

Создай производный класс WhaleAI(CloudAI, LandAI), который переопределяет недоступные киту методы так, чтобы они возвращали None. Добавь метод filter_data(values: list[int], limit: int) -> list[int], который возвращает новый список значений меньше limit и не изменяет исходный список.

Пример ввода и вывода:

whale_ai = WhaleAI()



print(whale_ai.swim())  # swimming in cloud data

print(whale_ai.breathe_with_gills())  # None

print(whale_ai.filter_data([1, 5, 9, 3], 5))  # [1, 3]