我正在尝试编写一个简单的程序来计算多项式函数的导数。这就是我所拥有的。它可能不太漂亮,但由于某种原因,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()
答案 0 :(得分:3)
你只能循环遍历可能具有多个值的list
之类的东西。
如果您尝试遍历第一个v
整数,则需要第一个v
整数的可迭代,而不是v
本身:
for i in range(v):
一般情况下,当您无法理解术语的含义时,请在the glossary中查找。对于iterable
,它说:
一个能够一次返回一个成员的对象。可迭代的示例包括所有序列类型(例如
list
,str
和tuple
)和一些非序列类型,如dict
和file
以及您使用__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