我试图建立一个基于两个范围和一个列表的“人口”列表。我创建的嵌套循环不会停止,即使我指定了它应该中断的位置(我检查了循环中使用的列表的长度,该长度等于303)。所以输出是无限的:在打印v=2,J=100(最大需要)的总体值之后,它返回到显示v=0,J=0的总体值。我该怎么修?代码如下:
from scipy.optimize import minimize_scalar
import math
import itertools
we=268.64
wexe=0.814
weye=-0.0017
Be=0.0568325
ae=0.0001969
ge=-0.00000047
De=1.02E-8
kb=1.38065E-23
energy_groundJ=[]
def energyJ (v,J):
E = we*(v+0.5) + wexe*(v+0.5)**2 + weye*(v+0.5)**3 + Be*(J*(J+1)) - ae*(v+0.5)*(J*(J+1)) - De*(J*(J+1)) + ge*(J*(J+1))*(v+0.5)**2
E_J=E*1.986E-23
return E_J
for v in [0,1,2]:
for J in range(0,101):
E_J=energyJ(v,J)
energy_groundJ.append(E_J)
Population=[]
def population_ground():
P=(2*J+1)*math.exp(-i/(kb*295))
return P
for i in energy_groundJ:
for v in [0,1,2]:
for J in range(0,101):
if i==303:
break
P=population_ground()
Population.append(P)
print("population at v = "+str(v)+" and J ="+str(J)+" = "+str(P))
break
只将您从一个“for”循环(最接近的一个/堆栈顶部)中分离出来,而不是多个。由于其他循环在检查之前不执行任何操作,因此可以执行以下操作:
相关问题 更多 >
编程相关推荐