Basic Vpython code error - "TypeError: bad operand type for unary -: 'tuple'"
Basic Vpython code error - "TypeError: bad operand type for unary -: 'tuple'"
首先,如果这是一个菜鸟问题,我深表歉意,但我是编码的新手。
我正在按照有关在 Vpython 中构建谐波振荡模拟器的指南进行操作,但每次我尝试 运行 该程序时都会收到此错误。
File "C:/Users/Nathan/Desktop/vspring", line 14
F_spring=-k*(block.pos -L)
TypeError: bad operand type for unary -: 'tuple'
谁能看看代码并告诉我哪里出错了。我从字面上遵循了这封信的指南,因为我只是逐行复制它告诉我的内容。但它没有问题。它只是说明 "Your program is now ready to run"
from visual import *
from visual.graph import *
L=vector(1,0,0)
s=vector(1.,0,0)
block=sphere(radius=0.25, color=color.cyan, pos=L+s)
spring=cylinder(pos=(0,0,0), axis=L+s, radius=.1)
scene.autoscale=0
posgraph=gcurve(color=color.green)
k=100,; g=9.8; mu_s=.5; mu_k=.5; m=1.; dt=.0001; d=0.; t=0.
F_mu_s=mu_s*m*g
F_spring=-k*(block.pos-L)
almost_zero_p=mag(F_spring)*dt
block.p=vector(0,0,0)
while not(mag(block.p)<almost_zero_p and F_mu_s>=mag(F_spring)):
if not(mag(block.p)<almost_zero_p):
F_mu_k=m*g*mu_k*norm(block.p)
else:
F_ms_k=vector(0,0,0)
F_spring=-k*(block.pos-L)
Fnet=F_spring+F_mu_k
block.p=block.p+Fnet*dt
block.pos=block.pos+block.p/m*dt
spring.axis=block.pos-spring.pos
d=d+mag(block.p/m)*dt
posgraph.plot(pos=(t,block.pos.x-L.x))
t=t+dt
print "Total distance traveled is", d
当您在第 12 行执行时:
k=100,
你实际上创建了一个元组 (100,)。
如果你想创建一个浮动,请执行:
k=100.
确实,当您尝试执行 -k
时,由于 k
类型(元组),一元运算符 -
不起作用。我认为这只是一个语法错误。
首先,如果这是一个菜鸟问题,我深表歉意,但我是编码的新手。
我正在按照有关在 Vpython 中构建谐波振荡模拟器的指南进行操作,但每次我尝试 运行 该程序时都会收到此错误。
File "C:/Users/Nathan/Desktop/vspring", line 14 F_spring=-k*(block.pos -L) TypeError: bad operand type for unary -: 'tuple'
谁能看看代码并告诉我哪里出错了。我从字面上遵循了这封信的指南,因为我只是逐行复制它告诉我的内容。但它没有问题。它只是说明 "Your program is now ready to run"
from visual import *
from visual.graph import *
L=vector(1,0,0)
s=vector(1.,0,0)
block=sphere(radius=0.25, color=color.cyan, pos=L+s)
spring=cylinder(pos=(0,0,0), axis=L+s, radius=.1)
scene.autoscale=0
posgraph=gcurve(color=color.green)
k=100,; g=9.8; mu_s=.5; mu_k=.5; m=1.; dt=.0001; d=0.; t=0.
F_mu_s=mu_s*m*g
F_spring=-k*(block.pos-L)
almost_zero_p=mag(F_spring)*dt
block.p=vector(0,0,0)
while not(mag(block.p)<almost_zero_p and F_mu_s>=mag(F_spring)):
if not(mag(block.p)<almost_zero_p):
F_mu_k=m*g*mu_k*norm(block.p)
else:
F_ms_k=vector(0,0,0)
F_spring=-k*(block.pos-L)
Fnet=F_spring+F_mu_k
block.p=block.p+Fnet*dt
block.pos=block.pos+block.p/m*dt
spring.axis=block.pos-spring.pos
d=d+mag(block.p/m)*dt
posgraph.plot(pos=(t,block.pos.x-L.x))
t=t+dt
print "Total distance traveled is", d
当您在第 12 行执行时:
k=100,
你实际上创建了一个元组 (100,)。
如果你想创建一个浮动,请执行:
k=100.
确实,当您尝试执行 -k
时,由于 k
类型(元组),一元运算符 -
不起作用。我认为这只是一个语法错误。