feat: solution for 'Повторный экзамен #2: Сравнительный обзор 3 сущностей (Tavily)'

This commit is contained in:
2026-07-01 11:31:54 +03:00
parent 29e3e8ba1d
commit f1bd10bd09
9 changed files with 321 additions and 247 deletions
+106
View File
@@ -0,0 +1,106 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Программа генерирует сравнительный обзор трёх сущностей, связанных с проектом Tavily.
Используется исключительно объектно‑ориентированный подход: все логика реализована в классах.
"""
class Entity:
"""
Класс, представляющий отдельную сущность (например, сервис, API, SDK).
"""
def __init__(self, name: str, features: list[str], pros: list[str], cons: list[str]):
self.name = name
self.features = features
self.pros = pros
self.cons = cons
def __str__(self) -> str:
return self.name
class ReviewGenerator:
"""
Класс, генерирующий сравнительный обзор для списка сущностей.
"""
def __init__(self, entities: list[Entity]):
if len(entities) < 2:
raise ValueError("Нужно минимум две сущности для сравнения.")
self.entities = entities
def generate(self) -> str:
"""
Возвращает строку с сравнительным обзором.
"""
lines = []
lines.append("Сравнительный обзор трёх сущностей проекта Tavily:\n")
# Список общих характеристик
lines.append("Общие характеристики:\n")
for entity in self.entities:
lines.append(f"{entity.name}:")
lines.append(f" - Функциональные возможности: {', '.join(entity.features)}")
lines.append(f" - Плюсы: {', '.join(entity.pros)}")
lines.append(f" - Минусы: {', '.join(entity.cons)}\n")
# Сравнение по ключевым аспектам
lines.append("Ключевые аспекты сравнения:\n")
# 1. Удобство использования
lines.append("1. Удобство использования:")
for entity in self.entities:
lines.append(f" - {entity.name}: {'Высокое' if 'Интуитивный интерфейс' in entity.features else 'Среднее/низкое'}")
lines.append("")
# 2. Производительность
lines.append("2. Производительность:")
for entity in self.entities:
lines.append(f" - {entity.name}: {'Высокая' if 'Оптимизированный код' in entity.features else 'Средняя/низкая'}")
lines.append("")
# 3. Расширяемость
lines.append("3. Расширяемость:")
for entity in self.entities:
lines.append(f" - {entity.name}: {'Высокая' if 'Модульная архитектура' in entity.features else 'Средняя/низкая'}")
lines.append("")
# Итоговый вывод
lines.append("Итоговый вывод:")
lines.append("• Tavily Search – лучший выбор для быстрого поиска благодаря интуитивному интерфейсу и высокой производительности.")
lines.append("• Tavily API – предпочтителен для интеграции в сторонние приложения, но требует более глубоких знаний.")
lines.append("• Tavily SDK – удобен для разработчиков, желающих быстро добавить функциональность, однако может быть ограничен в масштабируемости.")
return "\n".join(lines)
def main() -> None:
"""
Точка входа программы. Создаёт сущности и выводит сравнительный обзор.
"""
# Определяем три сущности проекта Tavily
search = Entity(
name="Tavily Search",
features=["Интуитивный интерфейс", "Оптимизированный код", "Модульная архитектура"],
pros=["Быстрый поиск", "Низкая нагрузка", "Гибкая настройка"],
cons=["Ограниченные API", "Не поддерживает расширенные фильтры"]
)
api = Entity(
name="Tavily API",
features=["Модульная архитектура", "Оптимизированный код"],
pros=["Гибкая интеграция", "Подробная документация"],
cons=["Сложный в настройке", "Высокая нагрузка при больших запросах"]
)
sdk = Entity(
name="Tavily SDK",
features=["Интуитивный интерфейс", "Модульная архитектура"],
pros=["Быстрая интеграция", "Поддержка нескольких языков"],
cons=["Ограниченная функциональность", "Не оптимизирован для больших данных"]
)
# Генерируем обзор
generator = ReviewGenerator([search, api, sdk])
print(generator.generate())
if __name__ == "__main__":
main()