写入文本文件时更改 python 中嵌套 for 循环内的变量值
Changing values of variable inside a nested for loop in python when writing to a text file
我想更改 f.write 函数中写入的值,以便在每次 i 循环运行时更改 j 循环。即每次 i 循环运行时,值 -1200.0 和 90.0 应该交替变为 0.0 和 0.0。代码如下:
f = open('workfile.txt', 'w')
for i in range(1, 152):
f.write('BEGIN PERIOD ' + str(i) + '\n')
for j in range(6,36):
f.write(str(j) + ' 1 -1200.0 90.0' + '\n')
f.write('END PERIOD ' + str(i) + '\n')
f.close()
我得到的输出如下:
BEGIN PERIOD 1
6 1 -1200.0 90.0
7 1 -1200.0 90.0
8 1 -1200.0 90.0
9 1 -1200.0 90.0
...
35 1 -1200.0 90.0
END PERIOD 1
类似地,直到开始周期 151 ... 结束周期 151。但是,我希望值 -1200.0 和 90.0 在 i 循环的每个替代迭代中变为 0.0 和 0.0。所以代码应该是这样的:
BEGIN PERIOD 1
6 1 -1200.0 90.0
7 1 -1200.0 90.0
8 1 -1200.0 90.0
9 1 -1200.0 90.0
...
35 1 -1200.0 90.0
END PERIOD 1
BEGIN PERIOD 2
6 1 0.0 0.0
7 1 0.0 0.0
8 1 0.0 0.0
9 1 0.0 0.0
...
35 1 0.0 0.0
END PERIOD 2
BEGIN PERIOD 3
6 1 -1200.0 90.0
7 1 -1200.0 90.0
8 1 -1200.0 90.0
9 1 -1200.0 90.0
...
35 1 -1200.0 90.0
END PERIOD 3
等等。
有人可以帮我解决这个问题吗?谢谢
我首先建议您使用 with open()
,因为它被认为更像 pythonic。话虽如此:
with open('workfile.txt', 'w') as f:
for i in range(1, 152):
f.write('BEGIN PERIOD ' + str(i) + '\n')
if i % 2 == 1:
x = '-1200.0'
y = '90.0'
else:
x = '0.0'
y = '0.0'
for j in range(6, 36):
str_append = '1 %s %s' % (x, y)
f.write(str(j) + str_append + '\n')
f.write('END PERIOD ' + str(i) + '\n')
我想更改 f.write 函数中写入的值,以便在每次 i 循环运行时更改 j 循环。即每次 i 循环运行时,值 -1200.0 和 90.0 应该交替变为 0.0 和 0.0。代码如下:
f = open('workfile.txt', 'w')
for i in range(1, 152):
f.write('BEGIN PERIOD ' + str(i) + '\n')
for j in range(6,36):
f.write(str(j) + ' 1 -1200.0 90.0' + '\n')
f.write('END PERIOD ' + str(i) + '\n')
f.close()
我得到的输出如下:
BEGIN PERIOD 1
6 1 -1200.0 90.0
7 1 -1200.0 90.0
8 1 -1200.0 90.0
9 1 -1200.0 90.0
...
35 1 -1200.0 90.0
END PERIOD 1
类似地,直到开始周期 151 ... 结束周期 151。但是,我希望值 -1200.0 和 90.0 在 i 循环的每个替代迭代中变为 0.0 和 0.0。所以代码应该是这样的:
BEGIN PERIOD 1
6 1 -1200.0 90.0
7 1 -1200.0 90.0
8 1 -1200.0 90.0
9 1 -1200.0 90.0
...
35 1 -1200.0 90.0
END PERIOD 1
BEGIN PERIOD 2
6 1 0.0 0.0
7 1 0.0 0.0
8 1 0.0 0.0
9 1 0.0 0.0
...
35 1 0.0 0.0
END PERIOD 2
BEGIN PERIOD 3
6 1 -1200.0 90.0
7 1 -1200.0 90.0
8 1 -1200.0 90.0
9 1 -1200.0 90.0
...
35 1 -1200.0 90.0
END PERIOD 3
等等。 有人可以帮我解决这个问题吗?谢谢
我首先建议您使用 with open()
,因为它被认为更像 pythonic。话虽如此:
with open('workfile.txt', 'w') as f:
for i in range(1, 152):
f.write('BEGIN PERIOD ' + str(i) + '\n')
if i % 2 == 1:
x = '-1200.0'
y = '90.0'
else:
x = '0.0'
y = '0.0'
for j in range(6, 36):
str_append = '1 %s %s' % (x, y)
f.write(str(j) + str_append + '\n')
f.write('END PERIOD ' + str(i) + '\n')