feat: solution for 'Повторный экзамен #2: Сравнительный обзор 3 сущностей (Tavily)'
This commit is contained in:
+106
@@ -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()
|
||||
Reference in New Issue
Block a user