如何将带有条件的旧式 Fortran DO 循环转换为 Python?

How to convert old-style Fortran DO loop with conditionals to Python?

我的问题是关于将Fortran转换为Python语言,但我无法理解这部分代码的工作原理。如何重写 Python 中的代码以及我应该使用哪个语句代替 do if then write 语句?

#FOR GEAR CONVEX SIDE I = l, FOR GEAR CONCAVE SIDE I = 2.

DO 99999 I=1,2
IF(I .EQ. 1)THEN
WRITE (72,*)'GEAR CONVEX SIDE'
DLTA=DLTX
M21PRM=M21XPR
AXIL=AXILX
ELSE
WRITE(72,*)'GEAR CONCAVE SIDE'
DLTA=DLTV
M21PRM=M21VPR
END IF
WRITE (72, *)

AXIA=DEF/(AXIL*AXIL)
#CALCULATE GEAR BLADE ANGLE


IF(I .EQ. 2)THEN
PSIG=180. D00*CNST-PSIG
END IF
CSPSIG=DCOS(PSIG)
SNPSIG=DSIN(PSIG)
CTPSIG=CSPSIG/SNPSIG

##CALCULATE CUTTER TIP RADIUS

IF(I .EQ. 1)THEN
RG = (ADIA-W)/2.DO0
ELSE
RG = (ADIA+W)/2.D00
END IF

这只是主要代码的一部分,我看不懂DO 9999 i=1,2部分和后面的代码(ifthen和[=16的关系=]).

天哪,是Fortran 77,我感受到了你的痛苦。

DO 99999 I=1,2
IF(I .EQ. 1)THEN
WRITE (72,*)'GEAR CONVEX SIDE'
.
.
.
IF(I .EQ. 2)THEN
.
.

类似于

for i in [1, 2]:
    if i == 1:
        print "GEAR CONVEX SIDE"
        .
        .
    if i == 2:
        .
        .

据我了解这部分 Fortran 代码,除了 for 循环行之外的所有内容都必须缩进。

如果你正在写入文件,正如 WRITE(72, *) 可能建议的那样,那么你需要在进入循环之前打开一个文件然后写入它而不是仅仅使用 print,像这样:

file = open("filename", "w")
for ...:
    if ...:
        file.write(" GEAR CONVEX SIDE")
    .
    .
    .