【发布时间】:2017-12-19 00:15:08
【问题描述】:
我查看了此 Q/A Intent of this Fotran77 code 并且几乎将以下 Fortran77 样式代码转换为 Python 3.x,但我怀疑 i = i + 1 应该放在 Python 版本中的哪个位置。正如链接问题的 cmets 中所述,我已经完成了一致性测试,结果相差 2 分。因此是问题所在。
i = 0
500 continue
i = i +1
if (i .le. ni) then
if (u(i,j-1) .gt. -9999.) then
r(1,j) = u(i,j-1)
go to 600
else
missing = i
go to 500
end if
end if
600 continue
这是我的 Python 版本
i = 0
while (i <= ni):
i = i+1
if (u[i,j-1] > -9999.0):
r[0,j] = u[i,j-1]
break
else:
missing = i
我是否将增量计数器放置在正确的位置?
【问题讨论】:
-
Fortran 列表从 1 开始,python 从 0 开始
-
如果您希望它等效,可能。最好的办法是调试/打印两个程序的值。现在只是微调的问题。但我的记忆很模糊。你的 fortran 程序中有循环吗?
-
是的,但是 j 也可能存在非一索引问题。我的问题是“您显示的代码中是否存在循环?”因为AFAIR循环是
DO I in 1,5... python版本有循环,fortran代码似乎没有循环。 -
Fortran 代码中没有循环。未引用语句 500。 “隐式”是什么意思?
-
@ShpielMeister - 你是绝对正确的!我进行了编辑。