python中eval函数的问题

python中eval函数的问题,python,eval,Python,Eval,我试图评估用户输入的方程式。我将所有数字以字符串形式放入一个列表中,然后使用join函数将其放入一个大字符串中,并将其输入eval函数。问题是我不断地得到错误: 使用输入: Please enter the function: 8x-3 Please enter the smaller x: -6Please enter the larger x: 4 8*x-3 错误消息: Traceback (most recent call last): File "main.py", line 2

我试图评估用户输入的方程式。我将所有数字以字符串形式放入一个列表中,然后使用join函数将其放入一个大字符串中,并将其输入eval函数。问题是我不断地得到错误:

使用输入:

Please enter the function: 8x-3
Please enter the smaller x: -6Please enter the larger x: 4
8*x-3
错误消息:

Traceback (most recent call last):
  File "main.py", line 27, in <module>    slope(input("Please enter the function: "), input("Please enter the smaller x: "), input("Please enter the larger x: "))  File "main.py", line 21, in slope
    y1 = eval("".join(f_list))
  File "<string>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'int'
此外:

返回:

8*x-3
当eval()函数运行时,它试图使用变量x,用户将其作为字符串提供,因此,当eval()尝试解方程时,它使用的是x的字符串:即“-6”而不是-6


要解决此问题,必须在调用eval()函数之前将x强制转换为整数:x=int(x)

只是不要使用
eval()
。那么当它是字符串形式时,我该如何做算术。我只是建议不要让数字是字符串形式,这不是一种使用数字的python方式,特别是在创建方程式的情况下,那么你可以使用
eval()
调用您的算术。有一个用于符号表达式计算的安全库,
symphy
。请注意。
"".join(f_list)
8*x-3