首页 > 解决方案 > 为什么这个 for 循环在每个循环上附加相同的值?

问题描述

我正在创建一个程序,通过微分,可以返回给定方程的任何静止点的坐标和性质。

到目前为止,我的整个程序是:

equation = input("y=")

expression_list = []

for i in equation:
    expression_list.append(i)


def derive(expression):
    
    global derivation
    derivation = []


    for i in expression:
        if i == "x" and int(expression[expression.index(i)+2]) != 0:

            derivation.append(int(expression[expression.index(i)-1]) * int(expression[expression.index(i)+2]))
            derivation.append("x")
            derivation.append("^")
            derivation.append(int(expression[expression.index(i)+2]) - 1)

derive(expression_list)

expression_list_1st_derivative = derivation

print(expression_list_1st_derivative)

我遇到问题的程序领域是:

def derive(expression):
    
    global derivation
    derivation = []


    for i in expression:
        if i == "x" and int(expression[expression.index(i)+2]) != 0:

            derivation.append(int(expression[expression.index(i)-1]) * int(expression[expression.index(i)+2]))
            derivation.append("x")
            derivation.append("^")
            derivation.append(int(expression[expression.index(i)+2]) - 1)

derive(expression_list)

expression_list_1st_derivative = derivation

print(expression_list_1st_derivative)

y=4x^5+3x^4举个例子,我创建了这个 for 循环,希望能给出它["20","x","^","4","12","x","^","3"],如果你学过微积分,你会知道它是 x/dx。我还没有包括运营商;这是我在清除这个障碍后会做的事情。目前这些代码行改为给出["20","x","^","4","20","x","^","4"]. 我必须进行哪些更改才能获得正确的结果?

标签: python

解决方案


expression.index(i)正在查找 的第一个位置i,而不是您当前正在处理的位置。

相反,您可以使用enumerate,然后您就可以使用当前的索引号。

如果你的函数返回一个值(这里是一个列表)而不是设置一个全局变量,那也会更好:

def derive(expression):
    derivation = []
    for index, i in enumerate(expression):  # <== note use of "enumerate"
        if i == "x" and int(expression[index+2]) != 0:
            derivation.append(int(expression[index-1]) * int(expression[index+2]))
            derivation.append("x")
            derivation.append("^")
            derivation.append(int(expression[index+2]) - 1)
    return derivation  # <== note return value

expression_list = ["20","x","^","4","12","x","^","3"]  
expression_list_1st_derivative = derive(expression_list)
print(expression_list_1st_derivative)

推荐阅读