Вопрос от Анонимного юзера 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 решение уравнения не будет выполняться, но будет выдано структурированное объяснение.
Если хотите, могу адаптировать код под конкретный предмет и класс, добавить дополнительные шаблоны по геометрии, тригонометрии и т.д.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



