【发布时间】:2018-06-25 16:40:51
【问题描述】:
所以前几天我因为一个错字而被困在一个问题上。我没有使用 i += 1 遍历我的嵌套循环,而是使用 i=+1。直到我开始打印步数并看到它连续打印第 1 步时,我才注意到这一点。因此,我得到的情节没有任何意义。
但是我不明白为什么我有任何情节,并且代码没有陷入无限循环?另外,我应该只在步数进行到一半之后才计算数据,所以我根本不明白我是如何获得任何数据的。还是 i =+ 1 意味着别的?我似乎在网上根本找不到关于 i=+1 的太多信息
这是原始代码的精简版:
for temp in np.linspace(1.0,4.0,num=100):
energyarray = []
for step in np.arange(0, sw*2):
for i in range(n-1):
for j in range(n-1):
H_old = -J*matrix[i,j]*(matrix[i,j-1] + matrix[i,j+1] + matrix[i-1,j] + matrix[i+1,j])
H_new = J*matrix[i,j]*(matrix[i,j-1] + matrix[i,j+1] + matrix[i-1,j] + matrix[i+1,j])
del_H = H_old-H_new
if del_H >= 0:
matrix[i,j] = -matrix[i,j]
elif del_H < 0:
prob = np.exp((del_H)/(temp))
rand = random.random()
if rand < prob:
matrix[i,j] = -matrix[i,j]
else:
matrix[i,j] = matrix[i,j]
if step >= (sw):
Ene = EnergyCal(matrix)
energyarray.append(Ene)
step =+ 1
energy_sum = []
energy_sum = sum(energyarray)
plt.figure(10)
plt.plot(temp, energy_sum, 'ro')
plt.show()
【问题讨论】:
-
因为它不是
while循环?并且递增/递减对下一次迭代没有影响...... -
@WillemVanOnsem 很高兴知道感谢您的帮助
-
有关
for循环的更多详细信息,请参见here。
标签: python python-2.7 numpy matplotlib