Если вы разрешите пользователю вводить выражение в виде строки и анализировать выражение с помощью evaluate=False
, как показано здесь , вы можете сравнить количество аргументов во введенном с полностью упрощенной версией.
>>> expr = (x - 3)*(x + 2)
>>> expanded = expand(expr)
>>> ans = 'x*x +2*x -3*x -6' # obtained from user
>>> if S(ans) == expanded: # it's right
... if len(parse_expr(ans, evaluate=False).args) != len(expanded.args):
... print('right, but not simplified')
Непростое значение ans
будет иметь 4 аргумента, в то время как расширенная форма будет иметь 3.