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

Fortran含整数表达式的if语句及数字标号作用咨询

Fortran两类条件语句解析(附Python转写示例)

1. 仅含整数表达式的if语句逻辑

早期Fortran(如Fortran 77)中,if(整数表达式)这类语句的判断依据是表达式结果的符号:

  • 当表达式结果小于0时,条件成立,执行紧跟的代码
  • 当结果等于0或大于0时,条件不成立,跳过后续代码

直白点说,if(n-kv)完全等价于Python代码里的 if (n - kv) < 0:

2. 带数字标号的算术if语句

这种是Fortran独有的算术if语句,格式为 if(整数表达式) 标号1,标号2,标号3,核心是根据表达式结果的符号跳转到对应标号的代码行:

  • 表达式结果小于0:跳转到标号1标记的代码行
  • 表达式结果等于0:跳转到标号2标记的代码行
  • 表达式结果大于0:跳转到标号3标记的代码行

拿你提供的代码举例:

  • if(n-kv)30,20,20:如果n-kv < 0,就跳转到标号30的行;如果n-kv >= 0,就跳转到标号20的行
  • if(kv) 50,50,40:如果kv <= 0,跳转到标号50的行;如果kv > 0,跳转到标号40的行

原Fortran代码转写为Python

结合上面的规则,你给出的Fortran代码可以转写为如下Python代码(注意Python列表是0索引,和Fortran的1索引需调整):

for l in range(1, nbn + 1):
    l1 = 2 * l - 1
    no = ib[l1 - 1]  # 转换为Python的0索引
    k1 = no - 1
    kr = k1 + 1
    for j in range(2, ms + 1):
        kv = kr + j - 1
        # 对应原if(n-kv)30,20,20
        if (n - kv) >= 0:
            tk[kr - 1][j - 1] = 0
        # 不管上面条件是否成立,都执行标号30的代码:重新赋值kv
        kv = kr - j + 1
        # 对应原if(kv)50,50,40
        if kv > 0:
            tk[kv - 1][j - 1] = 0
        # 否则直接进入下一次j循环(对应跳转到50 continue)
    tk[kr - 1][0] = 1  # 对应原tk(kr,1)=1

内容的提问来源于stack exchange,提问作者Fabián Alquinta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:00:53