Python 2.7 SyntaxError:python中数学表达式的语法无效
我不习惯python。只知道基本的事情。 我在python中使用数学运算来计算逆雅可比矩阵,它在一行中具有超长字符。 我的问题是‘python在一行中是否有限制字符?’ 或者如何在python中创建正确的模块? 或者python数学中不允许的操作是什么 我的python程序是为, 这是我计划的一部分:Python 2.7 SyntaxError:python中数学表达式的语法无效,python-2.7,syntax-error,Python 2.7,Syntax Error,我不习惯python。只知道基本的事情。 我在python中使用数学运算来计算逆雅可比矩阵,它在一行中具有超长字符。 我的问题是‘python在一行中是否有限制字符?’ 或者如何在python中创建正确的模块? 或者python数学中不允许的操作是什么 我的python程序是为, 这是我计划的一部分: class Skelplot(): def __init__(self): .... self.q_raw =[0,0,0] se
class Skelplot():
def __init__(self):
....
self.q_raw =[0,0,0]
self.dq_ref =[0,0,0]
....
while not rospy.is_shutdown():
...
dx = x_now - right_hand.x()
dy = y_now - right_hand.y()
dz = z_now - right_hand.z()
self.inverse_jacobian(dx,dy,dz)
self.q_raw[0] = self.dq_ref[0] + self.q_raw[0]
self.q_raw[1] = self.dq_ref[1] + self.q_raw[1]
self.q_raw[2] = self.dq_ref[2] + self.q_raw[2]
...
def inverse_jacobian(self, dx, dy, dz):
self.dq_ref[0] = (-(5*sin(self.q_raw[0] + 2*self.q_raw[1]) - 5*sin(self.q_raw[0] - self.q_raw[2]) + 5*sin(q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) + 10*sin(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) - 5*sin(self.q_raw[0] + self.q_raw[1]) - 5*sin(self.q_raw[0] + self.q_raw[2]) - 15*sin(self.q_raw[0]) + 10*sin(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dx + ((5*cos(self.q_raw[0] + 2*self.q_raw[1]) - 5*cos(self.q_raw[0] - self.q_raw[2]) + 5*cos(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) + 10*cos(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) - 5*cos(self.q_raw[0] + self.q_raw[1]) - 5*cos(self.q_raw[0] + self.q_raw[2]) - 15*cos(self.q_raw[0]) + 10*cos(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dy
self.dq_ref[1] = (-(5*sin(self.q_raw[0] - self.q_raw[1]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1]) + 5*sin(self.q_raw[0] - self.q_raw[2]) - 5*sin(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 5*sin(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 10*sin(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) - 10*sin(self.q_raw[0] + self.q_raw[1]) + 5*sin(self.q_raw[0] + self.q_raw[2]) + 10*sin(self.q_raw[0]) + 5*sin(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dx + ((5*cos(self.q_raw[0] - self.q_raw[1]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1]) + 5*cos(self.q_raw[0] - self.q_raw[2]) - 5*cos(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 5*cos(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 10*cos(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) - 10*cos(self.q_raw[0] + self.q_raw[1]) + 5*cos(self.q_raw[0] + self.q_raw[2]) + 10*cos(self.q_raw[0]) + 5*cos(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dy
self.dq_ref[2] = (-(10*sin(self.q_raw[0] - self.q_raw[2]) - 15*sin(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*sin(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1]) - 5*sin(self.q_raw[0] + self.q_raw[2]) + 5*sin(self.q_raw[0]) + 5*sin(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dx + ((10*cos(self.q_raw[0] - self.q_raw[2]) - 15*cos(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*cos(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1]) - 5*cos(self.q_raw[0] + self.q_raw[2]) + 5*cos(self.q_raw[0]) + 5*cos(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dy
以下是回应:
Traceback (most recent call last):
File "/home/adelleodel/ros/src/mekatron/nodes/skelplot.py", line 40, in <module>
class Skelplot():
File "/home/adelleodel/ros/src/mekatron/nodes/skelplot.py", line 203, in Skelplot
self.dq_ref[2] = (-(10*sin(self.q_raw[0] - self.q_raw[2]) - 15*sin(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*sin(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1]) - 5*sin(self.q_raw[0] + self.q_raw[2]) + 5*sin(self.q_raw[0]) + 5*sin(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dx + ((10*cos(self.q_raw[0] - self.q_raw[2]) - 15*cos(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*cos(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1]) - 5*cos(self.q_raw[0] + self.q_raw[2]) + 5*cos(self.q_raw[0]) + 5*cos(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dy
NameError: name 'self' is not defined
答复是:
File "/home/adelleodel/ros/src/mekatron/nodes/skelplot.py", line 204
self.dq_ref[2] = (-(10*sin(self.q_raw[0] - self.q_raw[2]) - 15*sin(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*sin(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1]) - 5*sin(self.q_raw[0] + self.q_raw[2]) + 5*sin(self.q_raw[0]) + 5*sin(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dx + ((10*cos(self.q_raw[0] - self.q_raw[2]) - 15*cos(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*cos(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1]) - 5*cos(self.q_raw[0] + self.q_raw[2]) + 5*cos(self.q_raw[0]) + 5*cos(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dy
^
SyntaxError: invalid syntax
那么,你能告诉我哪一个我做错了吗?
谢谢。我将您的代码复制到我的Python2.7中,它没有给我任何错误。我想这是因为您没有使用恒定的缩进,请确保您始终使用tab或相同的空间。你可以考虑选择一个合适的IDE,比如Sydor或Pycharm,他们会为你做这些。 <代码> NAMEORMUG/<代码>看起来像缩进问题。第二个错误发生在
self.dq\u ref[2]
,问题很可能发生在的某个地方。
在您的第二个代码段中。谢谢您的快速响应:)。我确信识别是正确的。我只是试着用“#”注释了最后一行(self.dq_ref[2]…),结果它成功了。但是我的程序需要self.dq_ref[2]数据。实际上,我不知道它是Python2.7还是Python3。。在列出已安装的软件包之后,我的系统中也有python 3。我通常使用Sublime进行编程。然后在终端上运行。我会考虑你的答案。感谢您的回复:)@adelleodel,如果您使用的是Windows,那么我强烈建议您作为Python初学者使用,它为您省去了很多麻烦,并且默认情况下包含了Spyder
,可能还有更有用的包。
File "/home/adelleodel/ros/src/mekatron/nodes/skelplot.py", line 204
self.dq_ref[2] = (-(10*sin(self.q_raw[0] - self.q_raw[2]) - 15*sin(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*sin(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*sin(self.q_raw[0] + self.q_raw[1]) - 5*sin(self.q_raw[0] + self.q_raw[2]) + 5*sin(self.q_raw[0]) + 5*sin(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*sin(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dx + ((10*cos(self.q_raw[0] - self.q_raw[2]) - 15*cos(self.q_raw[0] + self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1] - self.q_raw[2]) - 10*cos(self.q_raw[0] + self.q_raw[1] + 2*self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + self.q_raw[2]) + 10*cos(self.q_raw[0] + self.q_raw[1]) - 5*cos(self.q_raw[0] + self.q_raw[2]) + 5*cos(self.q_raw[0]) + 5*cos(self.q_raw[0] - self.q_raw[1] - self.q_raw[2]) - 5*cos(self.q_raw[0] + 2*self.q_raw[1] + 2*self.q_raw[2]))/(cos(self.q_raw[1] + 2*self.q_raw[2]) + cos(2*self.q_raw[1] + self.q_raw[2]) + cos(2*self.q_raw[1])/2 + cos(2*self.q_raw[2]) + cos(2*self.q_raw[1] + 2*self.q_raw[2]) - cos(self.q_raw[1]) - cos(self.q_raw[2]) - 5/2))*dy
^
SyntaxError: invalid syntax