对于学校作业,我正在编写一个使用Euler方法计算斜率的算法。在其中的一部分,我有一个for循环,它将重复一个方程模式,直到达到最终结果。我需要的是一种方法,将每个结果添加到列表中,然后绘制列表中的每个项目。如果可能的话,我还需要一些设置for循环的帮助。
这就是我所拥有的,请记住我对编码非常缺乏经验(请耐心等待)
stpsz = input ("Define "h" Value (step size)")
tfinal = input ("Define Final "T" Value (stopping place)")
xnow = input ("Define "X0" as a Starting Value")
t = 0
while t > tfinal
t = t + 1
slopenow = (xnow * (1-xnow))
#Save slopenow (as a number, not variable) to a list of slopes ( I don't understand how to make a list like this)
#Save xnow (as a number, not variable) to a list of xs)
xnext = (slopenow * stpsz)+(xnow)
xnext = x now
#repeat while-loop until tfinal is reached)
我非常感谢你们所能给予的任何帮助。
答案 0 :(得分:2)
听起来你正在寻找的是一个while
循环。像这样:
t = 0
while t < 10:
t = t + 1
# more code here
答案 1 :(得分:1)
这里有一个this等式的递归方法,让你知道我在评论中的意思。
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__))
但是有多种方法可以解决这个问题,例如有一段时间或一个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)
这是recursive调用或更简单的函数,只要在此处达到某个点就调用自身if slope.timestamp > until
。第一个电话是我的initial_slope
(step_size
和until
只是常量)。
行current_y = slope.slope + step_size * slope.slope
计算新的斜率值。然后我创建一个具有新斜率值和更新时间的斜率实例,并将其添加到列表中。
斜率实例,斜率列表和常量通过函数return find_slope(slopes, slope, step_size, until)
的自调用传递到下一步。需要返回的不仅是走下梯子并收集新的斜坡,还要返回到开始,以便呼叫者可以接收它。
您可以使用
调用递归函数 slopes = find_slope([], initial_slope, 1, 3)
并获取斜坡列表。我用一个空列表初始化它,该列表将填充斜率,然后从该函数返回。