2017-07-07 4 views
0

Zuerst entschuldigen Sie, wenn dies ein Noob-Problem ist, aber ich bin völlig neu im Codieren.Basic Vpython-Codefehler - "TypeError: schlechter Operandentyp für unary -: 'tuple'"

Ich befolge eine Anleitung zum Aufbau eines harmonischen Oszillationssimulators in Vpython, aber jedes Mal, wenn ich versuche, das Programm auszuführen, erhalte ich diesen Fehler.

Kann mir bitte jemand den Code ansehen und mir sagen, wo ich falsch gelaufen bin. Ich bin dem Führer wortwörtlich gefolgt, weil ich nur Zeile um Zeile kopiere, was ich sagen soll. Aber es hat keine Probleme beim Fotografieren. Darin heißt es nur "Ihr Programm ist nun bereit zu laufen"

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 

Antwort

0

Wenn Sie in Zeile tun 12:

k=100, 

Sie erstellen tatsächlich ein Tupel (100,).

Wenn Sie wollten einen Schwimmer erstellen, tun:

k=100. 

der Tat, wenn Sie wegen k Typ vorhatten funktioniert -k, die unären Operator - nicht (Tupel). Ich denke, das ist nur ein Syntaxfehler.

+0

Ah du Legende danke. Also hatte ich ein Komma anstelle eines Punktes gesetzt, der das Tupel erzeugte. Um ehrlich zu sein, habe ich mir die Zeile unter k = 100 angeschaut, was auch keinem lol geholfen hat. – user2081549

+0

kein Problem :) Sie hatten Glück, keine downvotes zu bekommen;), Syntaxprobleme werden in der Regel schnell abgelehnt. –

Verwandte Themen