python - Python for循环不迭代i = 1,2只输出第一次迭代
问题描述
我正在使用欧拉的微分方程方法构建一个 for 循环。然而,for 循环不会递增,仅显示 i=0 而不是 i=1 或 i=2 的值。
我尝试手动分配所有参数并重建 for 循环。
import math
def Euler(a,b,N,alpha):
h=(b-a)/N
t=a
w=alpha
for i in range (0,N):
w=w+h*(math.exp(t-w))
t=a+(i*h)
return t,w
Euler(0,1,2,1)
我希望函数返回 i=1 和 i=2 的结果
解决方案
正如评论中提到的 pault ,您的 return 在循环内,这意味着该函数在第一次迭代时退出。
您可能想要的是yield
,这会将函数变成生成器:
import math
def Euler(a,b,N,alpha):
h=(b-a)/N
t=a
w=alpha
for i in range (0,N):
w=w+h*(math.exp(t-w))
t=a+(i*h)
yield t,w
for x, y in Euler(0,1,2,1):
print(x, y)
>>> 0.0 1.1839397205857212
>>> 0.5 1.3369749844848988
推荐阅读
- r - 如何基于前缀模式合并列块
- string - Symfony 5:参数 #1 ($Genre) 必须是 ?App\Entity\MusicGenre 类型,字符串给定,在 PartiturasFixtures.php 中调用
- c# - c# ASP.NET Webforms:使用动态 href 动态创建锚元素
- html - 如何使用ajax前端和laravel作为后端上传图片?
- xpath - XPATH - 检索没有类且不在特定 html 标记内的数据
- report - 即使空手道失败,如何完全运行测试用例?
- c# - C#/UWP 中不同的 Dispatcher 方法
- google-crawlers - 谷歌爬虫会考虑 .js 链接吗?
- flutter - 在颤振(桌面)应用程序之外收听按键
- flutter - 如何从下拉列表中删除重复值 | 扑