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

2024-04-20 11:07:01 发布

您现在位置: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和{}之间的关系)。在


Tags: 代码语言forif语句sidewriteend
1条回答
网友
1楼 · 发布于 2024-04-20 11:07:01

上帝之母,是Fortran 77。我感觉到你的痛苦。在

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

类似于

^{pr2}$

据我所知,Fortran代码的这一部分,除了for循环行外,其他所有代码都必须缩进。在

如果您正在写入文件,如WRITE(72, *)所建议的那样,那么您需要在进入循环之前打开一个文件,然后再写入该文件,而不是仅仅使用print,如下所示:

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

相关问题 更多 >