你好,我试图在python中编写一个简单的程序来计算多项式函数的导数

时间:2014-08-13 04:06:02

标签: python calculus derivative

我正在尝试编写一个简单的程序来计算多项式函数的导数。这就是我所拥有的。它可能不太漂亮,但由于某种原因,for循环不可迭代(无论这意味着什么)。

def main():

    n = int(input("please enter the degree of the polynomial: "))
    x = int(input("please enter the input for p(x): "))

    p = 2*x**n + 3*x**(n-1)

    v = int(input("please enter the order of the derivative: "))

    for i in v:
        p = 2*n*x**(n - i) + 3*(n-1)*x**((n - 1) - i)

    print p

main()

2 个答案:

答案 0 :(得分:3)

你只能循环遍历可能具有多个值的list之类的东西。

如果您尝试遍历第一个v整数,则需要第一个v整数的可迭代,而不是v本身:

for i in range(v):

一般情况下,当您无法理解术语的含义时,请在the glossary中查找。对于iterable,它说:

  

一个能够一次返回一个成员的对象。可迭代的示例包括所有序列类型(例如liststrtuple)和一些非序列类型,如dictfile以及您使用__iter__()__getitem__()方法定义的任何类。 Iterables可用于for循环以及需要序列的许多其他地方(zip()map(),...)。当可迭代对象作为参数传递给内置函数iter()时,它返回对象的迭代器。这个迭代器适用于一组值的一次传递。使用iterables时,通常不需要调用iter()或自己处理迭代器对象。 for语句会自动为您执行此操作,创建一个临时的未命名变量,以在循环期间保存迭代器。另请参阅迭代器序列生成器

这可能比你想要的更详细,但第一句话很好地解释了它。列表,xrange对象或文件可以一次返回一个成员。一个数字不是;它甚至没有成员返回。*


*嗯,这取决于你如何定义数字。例如,如果您将5定义为{4, {4}},那么显然5确实有成员要返回......但他们并不会对您有多好处。此外,计算Peano整数非常慢。

答案 1 :(得分:-1)

我运行了你的代码并得到了:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "polynomial.py", line 17, in <module> 
 main()
File "polynomial.py", line 12, in main
for i in v:
TypeError: 'int' object is not iterable

您可以执行以下操作:

i = 1
while i < v + 1:
    p = ....
    i += 1