【发布时间】:2020-07-06 13:45:30
【问题描述】:
我想更改在 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
同样,直到 BEGIN PERIOD 151 ... END PERIOD 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
等等。 有人可以帮我解决这个问题吗?谢谢
【问题讨论】:
-
把
f.write(str(j) + ' 1 -1200.0 90.0' + '\n')变成:f.write(f"{j} 1 {['-1200.0 90.0', '0.0 0.0'][i%2==0]}\n") -
@PaulM。您在 f 字符串中使用的概念的名称是什么?似乎是列表形式的一些条件语句。以前没见过。
-
@AnsFourtyTwo 它没有特殊名称或任何东西。它只是一个包含两个字符串的列表文字,然后我正在访问该列表的索引
i%2==0。在此上下文中,布尔表达式将被隐式转换为整数。 -
好的,知道了。绕过
if-else的好方法。
标签: python python-3.x for-loop variables nested-loops