2017-07-07 3 views
0

Tout d'abord mes excuses si c'est un problème noob mais je suis complètement nouveau pour le codage.Erreur de code Basic Vpython - "TypeError: type d'opérande incorrect pour unary -: 'tuple'"

Je suis un guide sur la construction d'un simulateur d'oscillation harmonique dans Vpython mais chaque fois que j'essaie d'exécuter le programme, j'ai cette erreur. Est-ce que quelqu'un peut regarder le code et me dire où je me suis trompé. J'ai littéralement suivi le guide à la lettre car je ne fais que copier ligne par ligne ce qu'il me dit de mettre. Mais il n'a aucun problème à tirer. Il stipule que "Votre programme est maintenant prêt à fonctionner"

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 

Répondre

0

Lorsque vous faites à la ligne 12:

k=100, 

Vous créez en fait un tuple (100,).

Si vous voulez créer un flotteur, faire:

k=100. 

En effet, lorsque vous essayez de faire -k, l'opérateur unaire - ne fonctionne pas à cause du type k (tuple). Je pense que c'est juste une erreur de syntaxe.

+0

Ah vous légende merci. J'ai donc mis une virgule au lieu d'un fullstop qui a créé le tuple. Pour être honnête, je regardais la ligne sous k = 100 qui n'aidait pas non plus lol. – user2081549

+0

pas de problème :) vous avez eu de la chance de ne pas avoir de downvotes;) en général, les problèmes de syntaxe sont rapidement downvoted. –