2017-01-02 3 views
-2

Ich versuche, einen Code für Kinematik in Python zu schreiben. Wenn die Eingabe für die Zeit eine Ziffer ist, wird sie in eine Gleichung eingegeben. Wenn die Eingabe etwas anderes als eine Ziffer ist, wird sie an den zweiten Satz von Gleichungen übergeben. Allerdings, wenn ich versuchen, den Code auszuführen, erhalte ich einen Syntaxfehler wie folgt aus:Zuweisen einer Variable gibt Fehlermeldung in Python

File "kc.py", line 24 
    t2 = (-iv - ((iv**2 - 4 * ac * ip)**.5)/ (2 * ac) 
    ^

Was diesen Fehler verursacht?

ip = raw_input("Enter Initial Position: ") 
iv = raw_input("Enter Initial Velocity: ") 
ac = raw_input("Enter Acceleration: ") 
t = raw_input("Enter Time: ") 

ip1 = float(ip) 
iv1 = float(iv) 
ac1 = float(ac) 

if t.isdigit(): 

    t1 = float(t) 
    x = ip1 + iv1 * t1 + .5 * ac1 * t1 * t1 

else: 

    t1 = (-iv + ((iv**2 - 4 * ac * ip)**.5)/ (2 * ac) 
    t2 = (-iv - ((iv**2 - 4 * ac * ip)**.5)/ (2 * ac) 
+1

Bitte korrigieren Sie Ihren Code sorgfältiger. – TigerhawkT3

Antwort

0

iv ist ein String und Sie versuchen, mathematische Spielereien zu tun, ohne es zu float oder int zu konvertieren. Bitte korrigieren Sie es und überprüfen Sie es erneut. Auch haben Sie unausgewogene Klammern. Probieren Sie den folgenden Code aus:

ip = raw_input("Enter Initial Position: ") 
iv = raw_input("Enter Initial Velocity: ") 
ac = raw_input("Enter Acceleration: ") 
t = raw_input("Enter Time: ") 

ip1 = float(ip) 
iv1 = float(iv) 
ac1 = float(ac) 

if t.isdigit(): 

    t1 = float(t) 
    x = ip1 + iv1 * t1 + .5 * ac1 * t1 * t1 

else: 

    t1 = (-iv1 + ((iv1**2 - 4 * ac1 * ip1)**.5)/ (2 * ac1)) 
    t2 = (-iv1 - ((iv1**2 - 4 * ac1 * ip1)**.5)/ (2 * ac1)) 
+1

Das ist sicherlich ein Problem, aber kein Syntaxfehler. –

1

Die Klammern sind in Ihren Ausdrücken am Ende nicht ausgeglichen.

Verwandte Themen