写入文本文件时调用for循环内变量的值

Calling the value of a variable inside for loop when writing to a text file

我想从 python 创建一个文本文件,我希望变量的值在 for 循环内迭代更改。但是,我无法在循环内调用变量的值。相反,它只是将变量打印为字符串。代码如下:

f = open('workfile.txt, 'w')
for i in range (1,152):
a = 1
f.write('BEGIN PERIOD a \n')
f.write('6 1 1200.0 90.0 \n')
f.write('END PERIOD a \n')
a +=1
f.close()

在这里,在 f.write 函数中的 BEGIN PERIOD 和 END PERIOD 之后,我希望每次循环运行时更改 ''a'' 的值.但是,该程序将 ''a'' 作为字符串打印。请帮助我。

您可以在循环外声明a

a = 1

for i in range(1, 152):
    ...
    a += 1

如果在循环内部声明,每次循环再次循环,都会有一个新的a。如果你想让它一直在线,你需要在循环范围之外对其进行decalre。

如果你想使用a,你可以试试format:

a = 1

for i in range(1, 152):
    ...
    a += 1
    print('a is {}'.format(a))

这里'BEGIN PERIOD a \n'是一个字符串。程序无法识别您要打印 a 的值。您需要做的是划分字符串并指定变量以获取其值:'BEGIN PERIOD ' + str(a) + '\n'.

但是有一个问题,你在每次迭代中 运行 a = 1,因此你是否增加值并不重要 a +=1,你的代码将打印 a 总是 1.

最好不要使用 a,因为您已经有一个迭代器 i。您可以使用以下代码:

f = open('workfile.txt', 'w')
for i in range(1, 152):
    f.write('BEGIN PERIOD ' + str(i) + '\n')
    f.write('6 1 1200.0 90.0 \n')
    f.write('END PERIOD ' + str(i) + '\n')
f.close()

for i in range(1, 152):这里for循环迭代变量i从1(含)到152(不含)。

有2个问题。 (i) a 的初始化应该在循环外 (ii) 在 f.write() 中应该是 %d 格式并提供变量名

工作代码如下:

f = open('workfile.txt', 'w')
a = 1
for i in range (1,152):
    f.write('BEGIN PERIOD %d \n' %(a))
    f.write('6 1 1200.0 90.0 \n')
    f.write('END PERIOD %d \n' %(a))
    a +=1
f.close()