的Python:错误运行如果循环

问题描述:

我有这样的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

您的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