ValueError:无法将字符串转换为float:pi

时间:2016-03-27 07:56:59

标签: python math

我正在制作一个程序(w / python 2.7)用泰勒系列近似sin(x),这是代码:

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)

(抱歉那里的from math import陷入困境,对此并不是很好)

但是,当运行x = 5 * pi / 4时,程序返回

  

ValueError:float()的文字无效:5 * pi / 4

我在这里做错了什么?我认为python将x作为字符串读取并且无法浮动,但我知道什么

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

你是对的,python确实把x读作字符串:

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

您必须以弧度预先计算该值并将其传递给您的程序:

(5 * math.pi)/2 = 7.853981633974483

这是您作为计划输入的价值。

答案 1 :(得分:1)

可能有一种解决方案可以实现您的目标。在使用此解决方案之前,请阅读Python 2 input()函数的文档。该文档还解释了它在Python 3中删除的原因!

以下是代码:

from math import pi
x = input()
print x

如果您运行此代码并输入3 * pi,则会打印9.42477796076938

答案 2 :(得分: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