你好,我正在尝试用Python编写一个简单程序来计算多项式函数的导数

-2 投票
2 回答
704 浏览
提问于 2025-04-18 17:06

我正在尝试写一个简单的程序,用来计算多项式函数的导数。以下是我写的代码。虽然代码可能不太好看,但不知为什么,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 是有成员可以返回的……但这些对你来说并没有什么用处。而且,用佩阿诺整数进行计算是非常慢的。

撰写回答