你好,我正在尝试用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()
2 个回答
-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
3
你只能遍历那些可以包含多个值的东西,比如 list
列表。
如果你想遍历前 v
个整数,你需要一个包含前 v
个整数的可遍历对象,而不是直接用 v
本身:
for i in range(v):
一般来说,当你不理解某个术语的意思时,可以去查阅 术语表。对于 iterable
,它的解释是:
可逐个返回其成员的对象。可遍历对象的例子包括所有的序列类型(比如
list
列表、str
字符串和tuple
元组)以及一些非序列类型,比如dict
字典和file
文件,还有你自己定义的类,只要它们有__iter__()
或__getitem__()
方法。可遍历对象可以在for
循环中使用,也可以在很多需要序列的地方使用(比如zip()
、map()
等)。当一个可遍历对象作为参数传给内置函数iter()
时,它会返回一个迭代器。这个迭代器可以用来一次性遍历一组值。使用可遍历对象时,通常不需要自己调用iter()
或处理迭代器对象。for
语句会自动为你处理这些,创建一个临时的无名变量来保存迭代器,直到循环结束。还可以查看 迭代器、序列 和 生成器 的相关内容。
这可能比你想要的细节多,但第一句话解释得很好。列表、xrange 对象或文件都是可以逐个返回成员的东西。而数字就不是;它甚至没有成员可以返回。
* 嗯,这要看你怎么定义数字。如果你把 5
定义为 {4, {4}}
,那么显然 5
是有成员可以返回的……但这些对你来说并没有什么用处。而且,用佩阿诺整数进行计算是非常慢的。