Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 28 августа 2025 13:22

Отправь код

Ответ нейросети

28 августа 2025 13:22

Вот готовый шаблон кода на Python, который принимает текст задачи и формирует подробное решение/пояснение. По умолчанию применяется общий подход средней школы. Если задача содержит простое линейное уравнение с x, код попытается решить его с выводом пошаговых действий.

Сохраните как gdz_solver.py и запускать можно через командную строку, например:

  • python gdz_solver.py --text "Реши уравнение: 2*x+3=11"
  • или python gdz_solver.py --json task.json, где task.json содержит поля: problem_text, subject, klass, goal
#!/usr/bin/env python3
import json
import argparse
import sys

try:
    import sympy as sp
except Exception:
    sp = None  # SymPy не обязателен, но если есть - поможет решить уравнения

class GDZSolver:
    def __init__(self, problem_text, subject=None, klass=None, goal="Понять"):
        self.problem_text = problem_text or ""
        self.subject = subject
        self.klass = klass
        self.goal = goal if goal else "Понять"

    def attempt_equation_solution(self, text):
        """
        Попытка распознать и решить простое линейное уравнение вида
        lhs = rhs для переменной x, если возможно.
        Возвращает строку с пошаговым решением или None.
        """
        if sp is None:
            return None  # SymPy не установлен, продолжим с общим объяснением
        if '=' not in text:
            return None

        left, right = text.split('=', 1)
        left = left.strip()
        right = right.strip()

        x = sp.symbols('x')
        try:
            lhs = sp.sympify(left, locals={'x': x})
            rhs = sp.sympify(right, locals={'x': x})
        except Exception:
            return None  # Не удалось распознать выражения

        f = sp.simplify(lhs - rhs)  # f(x) = lhs - rhs
        try:
            sols = sp.solve(sp.Eq(f, 0), x)
        except Exception:
            sols = None

        if sols is None:
            return None

        steps = []
        steps.append(f"Уравнение: {lhs} = {rhs}")
        steps.append("Перенесём все члены в одну сторону: f(x) = lhs - rhs")
        steps.append(f"f(x) = {lhs} - {rhs} = {f}")
        steps.append("Решаем уравнение f(x) = 0")
        steps.append(f" x ∈ {sols}")
        steps.append(f"Ответ: x = {sols}")
        return "\n".join(steps)

    def compose_header(self, title):
        subject_str = f"Предмет: {self.subject}" if self.subject else "Предмет: не указан"
        class_str = f"Класс: {self.klass}" if self.klass else "Класс: не указан"
        return f"{title}\n{subject_str}\n{class_str}\nЦель: Понять\n"

    def generic_steps(self):
        # Базовый структурированный подход для средней школы
        steps = [
            "1) Прочитайте задачу и выпишите известные данные и то, что нужно найти.",
            "2) Переформулируйте задачу своими словами.",
            "3) Если задача относится к алгебре, попробуйте составить уравнение для искомой величины.",
            "4) Если явного уравнения нет, попробуйте разложить на простые операции: сумма, разность, произведение, частное; применяйте формулы/правила.",
            "5) Решите полученное выражение и найдите ответ.",
            "6) Проверьте ответ в исходной формулировке задачи.",
            "7) Объясните каждый шаг простыми словами."
        ]
        return steps

    def generate_solution(self):
        # Попытка решить уравнение, если задача распознаётся
        eq_steps = self.attempt_equation_solution(self.problem_text)
        if eq_steps:
            header = self.compose_header("Детальное решение (уравнение)")
            return header + "\n" + eq_steps

        # Иначе — общий подробный разбор
        header = self.compose_header("Подробное объяснение")
        steps = self.generic_steps()
        return header + "\n" + "\n".join(steps)

def main():
    parser = argparse.ArgumentParser(description="GDZ helper - генерирует подробное объяснение.")
    parser.add_argument('--json', dest='json_path', help='Путь к JSON-файлу с полями: problem_text, subject, klass, goal')
    parser.add_argument('--text', dest='text', help='Проблема в виде строки')
    args = parser.parse_args()

    problem_text = None
    subject = None
    klass = None
    goal = "Понять"

    if args.json_path:
        with open(args.json_path, 'r', encoding='utf-8') as f:
            data = json.load(f)
        problem_text = data.get('problem_text') or data.get('text') or ""
        subject = data.get('subject')
        klass = data.get('klass') or data.get('class')
        goal = data.get('goal') or "Понять"
    elif args.text:
        problem_text = args.text
        goal = "Понять"
    else:
        print("Укажите ввод: --json путь к файлу JSON или --text строка проблемы.")
        sys.exit(1)

    solver = GDZSolver(problem_text=problem_text, subject=subject, klass=klass, goal=goal)
    solution = solver.generate_solution()
    print(solution)

if __name__ == "__main__":
    main()

Пояснения по использованию:

  • Если задача содержит простое линейное уравнение с переменной x (например, "2*x+3=11"), код вернёт детальное решение с пошаговым объяснением.
  • Если задача не распознаётся как уравнение, код выдаёт общий подробный план-объяснение, рассчитанный на среднюю школу.
  • При отсутствии установленной библиотеки SymPy решение уравнения не будет выполняться, но будет выдано структурированное объяснение.

Если хотите, могу адаптировать код под конкретный предмет и класс, добавить дополнительные шаблоны по геометрии, тригонометрии и т.д.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Отправь код
Вот готовый шаблон кода на Python, который принимает текст задачи и формирует подробное решение/пояснение. По умолчанию применяется общий подход средней школы. Если задача содержит простое линейное уравнение с x, код попытается решить его с выводом пошаговых действий. Сохраните как gdz_solver.py и запускать можно через командную строку, например: - python gdz_solver.py --text "Реши уравнение: 2*x+3=11" - или python gdz_solver.py --json task.json, где task.json содержит поля: problem_text, subject, klass, goal ```python #!/usr/bin/env python3 import json import argparse import sys try: import sympy as sp except Exception: sp = None # SymPy не обязателен, но если есть - поможет решить уравнения class GDZSolver: def __init__(self, problem_text, subject=None, klass=None, goal="Понять"): self.problem_text = problem_text or "" self.subject = subject self.klass = klass self.goal = goal if goal else "Понять" def attempt_equation_solution(self, text): """ Попытка распознать и решить простое линейное уравнение вида lhs = rhs для переменной x, если возможно. Возвращает строку с пошаговым решением или None. """ if sp is None: return None # SymPy не установлен, продолжим с общим объяснением if '=' not in text: return None left, right = text.split('=', 1) left = left.strip() right = right.strip() x = sp.symbols('x') try: lhs = sp.sympify(left, locals={'x': x}) rhs = sp.sympify(right, locals={'x': x}) except Exception: return None # Не удалось распознать выражения f = sp.simplify(lhs - rhs) # f(x) = lhs - rhs try: sols = sp.solve(sp.Eq(f, 0), x) except Exception: sols = None if sols is None: return None steps = [] steps.append(f"Уравнение: {lhs} = {rhs}") steps.append("Перенесём все члены в одну сторону: f(x) = lhs - rhs") steps.append(f"f(x) = {lhs} - {rhs} = {f}") steps.append("Решаем уравнение f(x) = 0") steps.append(f" x ∈ {sols}") steps.append(f"Ответ: x = {sols}") return "\n".join(steps) def compose_header(self, title): subject_str = f"Предмет: {self.subject}" if self.subject else "Предмет: не указан" class_str = f"Класс: {self.klass}" if self.klass else "Класс: не указан" return f"{title}\n{subject_str}\n{class_str}\nЦель: Понять\n" def generic_steps(self): # Базовый структурированный подход для средней школы steps = [ "1) Прочитайте задачу и выпишите известные данные и то, что нужно найти.", "2) Переформулируйте задачу своими словами.", "3) Если задача относится к алгебре, попробуйте составить уравнение для искомой величины.", "4) Если явного уравнения нет, попробуйте разложить на простые операции: сумма, разность, произведение, частное; применяйте формулы/правила.", "5) Решите полученное выражение и найдите ответ.", "6) Проверьте ответ в исходной формулировке задачи.", "7) Объясните каждый шаг простыми словами." ] return steps def generate_solution(self): # Попытка решить уравнение, если задача распознаётся eq_steps = self.attempt_equation_solution(self.problem_text) if eq_steps: header = self.compose_header("Детальное решение (уравнение)") return header + "\n" + eq_steps # Иначе — общий подробный разбор header = self.compose_header("Подробное объяснение") steps = self.generic_steps() return header + "\n" + "\n".join(steps) def main(): parser = argparse.ArgumentParser(description="GDZ helper - генерирует подробное объяснение.") parser.add_argument('--json', dest='json_path', help='Путь к JSON-файлу с полями: problem_text, subject, klass, goal') parser.add_argument('--text', dest='text', help='Проблема в виде строки') args = parser.parse_args() problem_text = None subject = None klass = None goal = "Понять" if args.json_path: with open(args.json_path, 'r', encoding='utf-8') as f: data = json.load(f) problem_text = data.get('problem_text') or data.get('text') or "" subject = data.get('subject') klass = data.get('klass') or data.get('class') goal = data.get('goal') or "Понять" elif args.text: problem_text = args.text goal = "Понять" else: print("Укажите ввод: --json путь к файлу JSON или --text строка проблемы.") sys.exit(1) solver = GDZSolver(problem_text=problem_text, subject=subject, klass=klass, goal=goal) solution = solver.generate_solution() print(solution) if __name__ == "__main__": main() ``` Пояснения по использованию: - Если задача содержит простое линейное уравнение с переменной x (например, "2*x+3=11"), код вернёт детальное решение с пошаговым объяснением. - Если задача не распознаётся как уравнение, код выдаёт общий подробный план-объяснение, рассчитанный на среднюю школу. - При отсутствии установленной библиотеки SymPy решение уравнения не будет выполняться, но будет выдано структурированное объяснение. Если хотите, могу адаптировать код под конкретный предмет и класс, добавить дополнительные шаблоны по геометрии, тригонометрии и т.д.