Python 将结果添加到列表并设置for循环

Python 将结果添加到列表并设置for循环,python,for-loop,differential-equations,calculus,Python,For Loop,Differential Equations,Calculus,对于学校作业,我编写了一个算法,使用Euler方法计算坡度。在它的一部分,我有一个for循环,它将重复一个等式模式,直到最终结果得到满足。我需要的是一种方法,将每个结果添加到列表中,然后绘制列表中的每个项目。如果可能的话,我还需要一些帮助来设置for循环 以下是我所拥有的,请记住我在编码方面非常缺乏经验(请记住我) 我非常感谢你们所能给予的一切帮助 听起来你要找的是一个while循环。像这样: t = 0 while t < 10: t = t + 1 # more cod

对于学校作业,我编写了一个算法,使用Euler方法计算坡度。在它的一部分,我有一个for循环,它将重复一个等式模式,直到最终结果得到满足。我需要的是一种方法,将每个结果添加到列表中,然后绘制列表中的每个项目。如果可能的话,我还需要一些帮助来设置for循环

以下是我所拥有的,请记住我在编码方面非常缺乏经验(请记住我)


我非常感谢你们所能给予的一切帮助

听起来你要找的是一个
while
循环。像这样:

t = 0
while t < 10:
    t = t + 1
    # more code here
t=0
当t<10时:
t=t+1
#这里有更多代码

这里有一个方程的递归方法,让您了解我在评论中的意思

class Slope:
    def __init__(self, timestamp, slope):
        self.timestamp = timestamp
        self.slope = slope


def find_slope(slopes, slope, step_size, until):
    if slope.timestamp > until:
        return slopes
    current_y = slope.slope + step_size * slope.slope
    slope = Slope(slope.timestamp + 1, current_y)
    slopes.append(slope)
    return find_slope(slopes, slope, step_size, until)

if __name__=="__main__":
    initial_slope = Slope(0, 1)
    for current in find_slope([], initial_slope, 1, 3):
        print("slope: {slope}, timestamp: {timestamp}".format(**current.__dict__))
但有多种方法可以解决此问题,例如使用while或for循环。我也不得不承认你可以写一个简短的版本,但我认为冗长有助于你更好地理解

编辑

你的眼睛应该专注于这个功能

def find_slope(slopes, slope, step_size, until):
    if slope.timestamp > until:
        return slopes
    current_y = slope.slope + step_size * slope.slope
    slope = Slope(slope.timestamp + 1, current_y)
    slopes.append(slope)
    return find_slope(slopes, slope, step_size, until)
这是一个调用或更简单的函数,只要到达此处的某个点,它就会调用自己,如果slope.timestamp>一直到。第一个调用是使用我的
初始坡度
step\u size
until
只是常量)

current_y=slope.slope+step_size*slope.slope
计算新的坡度值。然后,我使用新的坡度值和更新时间创建一个坡度实例,并将其添加到列表中

斜率实例、斜率列表和常数通过调用函数
返回find\u slope(斜率、斜率、步长、直到)
传递到下一步。返回不仅需要沿着阶梯向下并收集新的坡度,还需要返回起点,以便呼叫方能够接收到它

您可以使用

 slopes = find_slope([], initial_slope, 1, 3)

把斜坡的清单拿回来。我用一个空列表初始化了它,该列表将被斜率填充,然后从这个函数返回。

我认为您应该先弄清楚等式中的
xnext
是什么,以及它在等式
f(t1)
中的样子。您需要在方程中找到模式,for循环或递归可能很容易;)你能详细说明一下吗?我很感兴趣,只是不完全理解。您可能想澄清一下,您所指的是哪种欧拉方法(他非常多产)以及
t最终
代表了什么。如果这真的只是您流程的迭代次数,请接受下面@blues的答案。我的意思是,您应该先写下第一步(t_0)和第二步(t_1)的完整等式(带数字)。如果您已经这样做了,您将看到哪些变量发生了变化,哪些变量依赖于上一步,等等。如果您已经找到了模式,您将看到for循环、while循环或任何对T部分有意义的自动循环。非常感谢。哇,谢谢你!从我对它的理解来看,这就是我正在使用的方法类型。不幸的是,我不太明白。如果这对你不是一个很大的不便,你能不能请你解释一下不同的部分,以及它们如何与我试图做的相关?我看到你们正在使用一个坡度类,我现在肯定要合并它,我只是不知道如何合并。谢谢。@Noahprenger这有帮助吗?
 slopes = find_slope([], initial_slope, 1, 3)