2017-07-07 13 views
0

首先我的道歉,如果這是一個noob問題,但我完全是新的編碼。基本的Vpython代碼錯誤 - 「TypeError:一元操作數的錯誤類型 - :'元組''

我正在關注在Vpython中構建諧波振盪模擬器的指南,但每次我嘗試運行該程序時都會出現此錯誤。

File "C:/Users/Nathan/Desktop/vspring", line 14 F_spring=-k*(block.pos -L) TypeError: bad operand type for unary -: '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 

回答

0

當你在第12行做:

k=100, 

實際上創建一個元組(100)。

如果你想創建一個浮動,這樣做:

k=100. 

事實上,當你試圖做-k,單目運算符-不會因爲k類型(元組)的工作。我認爲這只是一個語法錯誤。

+0

啊你傳說中的謝謝。所以我把一個逗號代替了一個創建元組的全稱。說實話,我正在看k = 100下的線,這沒有幫助大聲笑。 – user2081549

+0

沒問題:)你很幸運,不會得到任何降價;)通常,語法問題會很快降低。 –

相關問題