2017-04-18 55 views
-1

我有這樣的Python:錯誤運行如果循環

ten=(1,7,8,10) 
ten=np.array(ten) 
nine=(3,6,9) 
nine=np.array(nine) 
lat=range(1,11) 
p_new1=[] 
H2O_vmr_new1=[] 
level=range(1,91) 
row=range(0,6) 
for j in lat: 
    if j in ten: 
     print j 
     for a in level: 
      if((H2O_vmr[a]-H2O_vmr[a+1])/(p[a]-p[a+1]))-((H2O_vmr[a-1]- 
     H2O_vmr[a])/(p[a-1]-p[a]))>.000001: 
       p_new1.append(p[a]) 
       H2O_vmr_new1.append(H2O_vmr[a]) 
    elif j in nine: 
     for a in level: 
      if((H2O_vmr[a]-H2O_vmr[a+1])/(p[a]-p[a+1]))-((H2O_vmr[a-1]- 
       H2O_vmr[a])/(p[a-1]-p[a]))>.000001: 
       p_new1.append(p[a]) 
       H2O_vmr_new1.append(H2O_vmr[a]) 

只有第一個代碼,如果環路是工作太只需要「J」(我想打印「J」)的最後的值.second循環-'elif'(我嘗試'如果'而不是'elif'也)甚至不工作。我真的是新來的this.Any幫助將不勝感激。

注:我沒有發佈完整的代碼,因爲它很長。我只發佈了顯示錯誤的部分。

+1

是什麼'level'?你在哪裏定義它?您的代碼不完整,無法幫助您。 –

+0

什麼是關卡的內容? –

+0

「只有第一個循環正在工作,它也只需要'j'的最後一個值」你是什麼意思? – njzk2

回答

1

您的for循環工作,那裏沒有問題。你還沒有發佈H2O_vmrp的值,所以我不知道你想要做什麼。

如果我要做一個假設,我會說你想要訪問循環索引,這可能是問題所在。

H2O_vmr[a+1] 

我假設你在嘗試訪問下一個索引使用a+1並在試圖訪問一個索引使用a-1。這可能是混淆的原因。 a+1未訪問下一個索引,而是取值爲a,並將其加1。爲了得到該指數在for循環中,您可以:

for idx, val in enumerate(ints): 
    print(idx, val) 

Accessing the index in Python 'for' loops

讓我知道,如果我的假設是正確的,否則您提供配方中所使用的兩個數組的內容。

證明你的for循環的工作原理:

import numpy as np 
ten=(1,7,8,10) 
ten=np.array(ten) 
nine=(3,6,9) 
nine=np.array(nine) 
lat=range(1,11) 
p_new1=[] 
H2O_vmr_new1=[] 
level=range(1,91) 
row=range(0,6) 
for j in lat: 
    if j in ten: 
     print("j in ten: ", end="") 
     print(j) 
    elif j in nine: 
     print("j in nine: ", end="") 
     print(j) 

對於上述結果是:

j in ten: 1 
j in nine: 3 
j in nine: 6 
j in ten: 7 
j in ten: 8 
j in nine: 9 
j in ten: 10