2017-12-11 12 views
0

私は、さまざまな入力に基づいてファイルを書き込む関数を書いています。この機能は、私が個々の部分に使用したときにうまく機能します。しかし、私はそれを行うためにループを使用して、それは動作しません、なぜ私は分かりません。以下は forループのpythonで関数を使用する

私がしようとしたすべてがcontrolDictというファイルを作成することです
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) 

、それは

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) 

しかし、ループが最初で立ち往生したときに、この機能が正常に動作しますループ全体の最初の場所に値を書き込んだりするのはどういうことなのでしょうか。助言がありますか?

+0

CD.controlDicWritterのコードを提供できますか?私たちはそれなしでこれを再現することはできません。 –

答えて

1

またcontroDictReadモジュールのソースを見て参考になるが、私は間違っているかもしれない何疑いを持っている:

あなたのコードはcontrolDictWriterに配列全体を渡しているように見えるが、あなたのコード例では、に表示されます単一の整数を渡すこと。それは意図的なのでしょうか?

関連する問題