基本的Vpython代码错误 - “TypeError:一元的坏操作数类型 - :'tuple'”

时间:2017-07-07 12:17:14

标签: python physics simulator vpython

首先,如果这是一个noob问题,我很抱歉,但我完全不熟悉编码。

我正在关注在Vpython中构建谐波振荡模拟器的指南,但每次尝试运行该程序时都会出现此错误。

  

文件“C:/ Users / Nathan / Desktop / vspring”,第14行      F_spring = -k *(block.pos -L)   TypeError:一元的坏操作数类型 - :'tuple'

有人可以查看代码并告诉我哪里出错了。我完全按照信件的指南,因为我只是逐行复制它告诉我要放的东西。但是拍摄没有问题。它只是声明“您的程序现在已准备好运行”

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

1 个答案:

答案 0 :(得分:0)

第12行时:

k=100,

你实际创建了一个元组(100,)。

如果你想创建一个浮动,请执行:

k=100.

确实,当您尝试执行-k时,由于-类型(元组),一元运算符k不起作用。我认为这只是一个语法错误。