在for循环python中使用函数

时间:2017-12-11 23:03:04

标签: python for-loop

我写了一个函数来根据不同的输入写一个文件。当我将它用于单个部件时,该功能正常工作。但是,当我使用for循环来做它时,它不起作用,我不知道为什么。

以下是我的代码

import controDictRead as CD
import numpy as np

Totallength=180000
x=np.arange(0.,Totallength,1.)  
h=300*np.ones(len(x))

Relaxationzone=1000 # Relaxation zone width

#I=2
#x_input=1000
#y_start=-200
y_end=9
z=0.05
nPoints=4000
dx=20000
threshold=1000
x_input=np.zeros(int(np.floor(Totallength/dx)))
y_start=np.zeros(len(x_input))
I=np.zeros(len(x_input))
for i in range(len(x_input)):
    if i==0:
        x_input[i]=Relaxationzone
    else:
        x_input[i]=dx*i
        if x_input[i]>=Totallength-Relaxationzone:
            x_input[i]=Totallength-Relaxationzone
    I[i]=i+1
    y_start[i]=np.interp(x_input[i],x,h)
    controlDict_new=CD.controlDicWritter(I,x_input[i],y_start[i],y_end,z,nPoints)

我试图做的就是写一个名为controlDict的文件,它有一个位置列表,其格式如下所示

location1
      {
        type uniform;
        axis y;
        start (1000 -300 0.05 );
        end   (1000 9 0.05 );
        nPoints 3000;
      }

我的所有controlDictRead函数都是找到我感兴趣的位置名称(例如location1),然后将值(例如start,end,nPoints)替换为我输入的值。当我逐个输入这些值时,此功能正常工作,例如

controlDict_new=CD.controlDicWritter(3,x_input[2],y_start[2],y_end,z,nPoints)

然而,当我使用类似于开头所示的循环时,它不起作用,循环卡在第一个位置并且在整个循环中将值写入第一个位置,我不知道为什么。有什么建议?

1 个答案:

答案 0 :(得分:1)

查看controDictRead模块的来源会很有帮助,但我怀疑可能出错:

您的代码似乎将整个数组传递给controlDictWriter,但您的示例代码似乎传递了一个整数。这是故意的吗?