ValueError:无法将字符串转换为浮点值:pi



我正在制作一个程序(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读取为字符串,但无法浮动,但我对了解多少

任何帮助都将不胜感激!

你是对的,python确实将x读取为字符串:

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

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

(5 * math.pi)/2 = 7.853981633974483

这将是您作为程序输入所提供的值。

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

这是代码:

from math import pi
x = input()
print x

如果运行此代码并输入3 * pi,它将打印9.42477796076938

如果您想从命令行获取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

最新更新