Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在写入文本文件时调用for循环内部变量的值_Python_For Loop_Variables_File Writing - Fatal编程技术网

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

Python 在写入文本文件时调用for循环内部变量的值,python,for-loop,variables,file-writing,Python,For Loop,Variables,File Writing,我想从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.

我想从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函数中的开始周期和结束周期之后,我希望每次循环运行时,'a''的值都会改变。但是,程序将“a”打印为字符串。请帮助我。

您可以在循环外声明
a

a=1
对于范围(1152)内的i:
...
a+=1
如果在循环内声明,则每次循环再次循环时,都会出现一个新的
a
。如果要使其始终在线,则需要在循环范围外对其进行贴花

如果您想使用
a
,您可以尝试
格式化

a=1
对于范围(1152)内的i:
...
a+=1
打印('a为{}'。格式(a))

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

但是有一个问题,您在每次迭代中运行
a=1
,因此无论您是否在此处增加值
a+=1
,您的代码将始终作为
1
打印
a

最好不要使用
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()
对于范围(1152)内的i:
这里for循环迭代变量
i
从1(包含)到152(排除)。

有两个问题。 (i) 循环的初始化应该在循环之外 (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()