2012-04-01 2 views
1

Mein Ziel ist es, ein Programm zu erstellen, das Grad in Radiant konvertiert. Die Formel ist (Grad * 3.14)/180. Aber Python hält mir diesen Fehler geben:Probleme mit der Zeichenfolge in Python schweben

Traceback (most recent call last): 
    File "2.py", line 6, in <module> 
    main() 
    File "2.py", line 4, in main 
    degrees = (degrees * 3.14)/180 
TypeError: can't multiply sequence by non-int of type 'float' 

Von diesem Code:

def main(): 
    degrees = raw_input("Enter your degrees: ") 
    float(degrees) 
    degrees = (degrees * 3.14)/180 

main() 

EDIT: Vielen Dank für die Hilfe!

Antwort

8
float(degrees) 

tut nichts. Oder es macht einen Float von den String-Eingabe-Graden, aber setzt es nicht irgendwo, so dass Grad eine Zeichenkette bleibt. Das ist es, was der TypeError sagt: Sie bitten ihn, eine Zeichenkette mit der Zahl 3.14 zu multiplizieren.

degrees = float(degrees) 

würde es tun.

Übrigens gibt es bereits Funktionen zwischen Grad und Radiant im Mathematikmodul zu konvertieren:

>>> from math import degrees, radians, pi 
>>> radians(45) 
0.7853981633974483 
>>> degrees(radians(45)) 
45.0 
>>> degrees(pi/2) 
90.0 
+1

Ich möchte nur hinzufügen, dass Strings in Python unveränderlich sind somit alle Operationen auf sie ein neues Objekt erstellen, das Original nie ändern. – Zenon

+0

Danke !! Ja, ich weiß, aber mein Lehrer möchte, dass ich selbst dafür eine Funktion übernehme. – netbyte

2

float() nicht sein Argument ändern, es gibt ihn als float. Ich vermute, was Sie wollen, ist (auch Standard __name__ Konvention aus Gewohnheit Zugabe):

def main(): 
    degrees = raw_input("Enter your degrees: ") 
    degrees = float(degrees) 
    degrees = (degrees * 3.14)/180 

if __name__ == '__main__': 
    main() 
+0

Was macht der if __name__ == '__main__': main()? – netbyte

+1

@netbyte überprüfen Sie diese http://stackoverflow.com/questions/8228257/what-does-if-name-main-mean-in-python :) –