2016-03-27 13 views
1

私はテイラー級数を(x)は罪を近似する(のpython 2.7/w)のプログラムを作ってるんだが、ここでのコードは次のとおりです。とValueError:float型に文字列を変換できませんでした:パイ

from math import pi 
from math import sin 
from math import factorial 
x=float(raw_input("Degree(in radian, example: 5*pi/4): ")) 
n=input("n: ") 
Sum=0 
for i in range(1,n+1): 
    Sum=Sum+(pow(-1,(i+1))*pow(x,(2*i-1))/factorial(2*i-1)) 
error=math.fabs(sin(x)-Sum) 
print "Using Taylor series for sin(%s) with n = %d returns %f,with error= %f"(x,n,Sum,error) 

(申し訳ありませんX = 5 *のPI/4で実行アップがfrom math import混乱、これと全く良くない)しかし

は、プログラムは、私がここで間違ってやっている何

ValueError: invalid literal for float(): 5*pi/4

を返しますか?私はPythonがxを文字列として読み込み、それを浮かせないと思うが、何を知っているのだろうか。

助けていただければ幸いです!あなたは右、Pythonは文字列としてxを読まずしている

+1

Pythonの 'float()'関数は '' 5 * pi/4''を理解できません。浮動小数点数や '' 4 'や '' 2.5883' 'のような文字列表現を渡す必要があります。 – TigerhawkT3

+0

Python 2の学習に気を使わず、Python 3に直接切り替えてください。 'raw_input()'の同等物は 'input()'と呼ばれ、 'print'は関数です。残りはほとんど同じでなければなりません。つまり、必要最小限の例に近づくように入力値をハードコードすることができます。 –

答えて

1

y = raw_input("Degree(in radian, example: 5*pi/4): ") 
print y => 5*pi/4 

あなたはラジアンの値を事前に計算し、あなたのプログラムにそれを渡す必要があります:

(5 * math.pi)/2 = 7.853981633974483 

はこれは次のようになりあなたのプログラムに入力として与える値。

1

あなたが望むものを達成するための解決策があるかもしれません。この解決方法を使用する前に、Python 2 input()関数のドキュメントを読んでください。ドキュメントには、Python 3で削除された理由も説明されています。ここで

はコードです:

from math import pi 
x = input() 
print x 

あなたはこのコードを入力3 * piを実行した場合、それは9.42477796076938を印刷します。

1

コマンドラインからa * pi/b形式の値を取得する場合は、次のコマンドを使用できます。

x=(raw_input("Degree(in radian, example: 5*pi/4): ")) 
numerator = float (x.split('*')[0]) 
denominator =float (x.split('/')[1]) 
x = numerator* pi /denominator 
関連する問題