Проблема - 1 :
это даст мне ошибку EOF, потому что он разделит слова таким образом, что sp.sqrt (4) будет sp.sqrt (4))
- Нет, он не разделяет строку таким образом, потому что вы разделяете строку с помощью '', поэтому вывод для функции разделения будет
['5-(2-sp.sqrt(4))']
- Он не выдаст ошибку до тех пор, пока ваш ввод не будет иметь допустимое выражение python (в этом случае я подозреваю, что проблема связана с
sp
)
Проблема - 2 :
если я напишу «2-10», он не будет его оценивать и просто вернет «2-10», но когда я напишу «2-10 * ( 2-5) 'он вернет ответ на запись.
Это потому, что вы вызвали функцию eval (), только если есть оба' ('и') '
Проблема - 3 :
Это потому, что eval () принимает только допустимые python выражения (вы не можете поместить не объявленную переменную непосредственно внутри параметра). В вашем случае x не был объявлен раньше.
Решение:
Существует функция sympy parse_expr
, которая, вероятно, делает то, что вы хотите здесь:
In [20]: from sympy import parse_expr
In [21]: parse_expr('5-(2-sqrt(4))')
Out[21]: 5
In [22]: parse_expr('2-10')
Out[22]: -8
In [23]: parse_expr('2+x-10-(5*10)')
Out[23]: x - 58