你好,我正试图用python写一个简单的程序,它将计算多项式函数的导数



我正试图写一个简单的程序,将计算一个多项式函数的导数。这是我有的。它可能不漂亮,但由于某种原因,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()

你只能循环遍历可迭代对象,比如有多个值的list

如果你试图遍历第一个v整数,你需要一个第一个v整数的可迭代对象,而不是v本身:

for i in range(v):

一般来说,当你不明白一个术语的意思时,就去查词汇表。对于iterable,它说:

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

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


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

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

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

最新更新