我正在制作一个程序(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作为字符串读取并且无法浮动,但我知道什么
任何帮助将不胜感激!
答案 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