You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将带条件的老式Fortran DO循环转换为Python代码?

Fortran DO-IF-THEN-WRITE 转 Python 指南

嘿,我来帮你搞定这个Fortran转Python的问题!咱们先拆解一下你提到的Fortran代码逻辑,再一步步对应到Python的写法上。

先理解Fortran代码的核心逻辑

你说的这段代码大概是类似这样的典型结构(带标号DO循环+条件输出):

DO 9999 i=1,2
    IF (your_condition) THEN
        WRITE(*,*) "输出内容", i
    ENDIF
9999 CONTINUE

这段代码的作用很明确:循环变量i从1遍历到2,每次循环里判断your_condition是否成立,成立就往标准输出打印指定内容和当前的i值。

用Python语句替代的对应方案

Python里没有Fortran那种带标号的DO循环,但咱们可以用更直观的语法实现完全一致的逻辑:

1. 替代DO循环:用for循环

Fortran的DO 9999 i=1,2是遍历i=1、i=2,对应Python的range(1, 3)(因为Python的range是左闭右开区间,range(1,3)会生成1、2两个值),所以循环可以写成:

for i in range(1, 3):

2. 替代IF-THEN:用if条件判断

Fortran的IF (condition) THEN ... ENDIF直接对应Python的if condition:,注意Python用缩进代替ENDIF来划分代码块,不需要额外的结束语句。

3. 替代WRITE:用print()函数

Fortran的WRITE(*,*)是往标准输出打印内容,Python里直接用print()函数就行。如果需要格式化输出(比如带变量i),用f-string是最简洁的方式,也可以用format()方法适配更复杂的格式需求。

完整的代码示例

把上面的Fortran示例转成Python,就是这样:

# 这里替换成你实际的判断条件,比如i == 1或者其他逻辑
for i in range(1, 3):
    if i == 1:
        print(f"输出内容,当前i值:{i}")

如果你的Fortran代码里有更复杂的输出格式(比如指定小数位数),可以用Python的格式化字符串实现,比如:

print(f"数值:{i:.2f}")  # 保留两位小数,对应Fortran的WRITE(*,'(F5.2)') i

额外提示

如果你的Fortran代码里的标号9999还有其他跳转逻辑(比如GOTO 9999),那需要先理清跳转的实际意图,再用Python的循环控制语句(比如continue、break)来替代。不过大部分情况下,带标号的DO循环就是普通的遍历循环,用上面的for循环就足够了。

内容的提问来源于stack exchange,提问作者can23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:30:27