因此,前几天我因为错字而陷入一个问题。我没有使用i + = 1遍历嵌套循环,而是使用i = +
1。在开始打印步骤数并看到它是连续打印步骤1之前,我没有注意到这一点。因此,我得到的情节毫无意义。
但是,我不明白的是为什么我什么都没有,而且代码没有陷入无限循环中?另外,我应该只在完成步骤数的一半之后才开始计算数据,所以我根本不了解如何获得任何数据。还是我=
+ 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()
Python for循环是基于迭代器的“ for-each”循环。每次迭代开始时都会重新分配迭代变量。换句话说,以下循环:
In [15]: nums = 1,2,5,8
In [16]: for num in nums:
...: print(num)
...:
1
2
5
8
等效于:
In [17]: it = iter(nums)
...: while True:
...: try:
...: num = next(it)
...: except StopIteration:
...: break
...: print(num)
...:
1
2
5
8
同样,以下循环是等效的:
In [19]: for num in nums:
...: print("num:", num)
...: num += 1
...: print("num + 1:", num)
...:
...:
num: 1
num + 1: 2
num: 2
num + 1: 3
num: 5
num + 1: 6
num: 8
num + 1: 9
In [20]: it = iter(nums)
...: while True:
...: try:
...: num = next(it)
...: except StopIteration:
...: break
...: print("num:", num)
...: num += 1
...: print("num + 1:", num)
...:
num: 1
num + 1: 2
num: 2
num + 1: 3
num: 5
num + 1: 6
num: 8
num + 1: 9
请注意,C样式的for循环在Python中不存在,但是您始终可以编写while循环(c样式的for循环本质上是while循环的语法糖):
for(int i = 0; i < n; i++){
// do stuff
}
等效于:
i = 0
while i < n:
# do stuff
i += 1
请注意,不同之处在于,在这种情况下,迭代 取决于i
# do stuff
,修改的任何内容i
都会影响迭代,而在前一种情况下,迭代取决于
迭代器 。注意,如果我们确实修改了迭代器,则迭代会受到影响:
In [25]: it = iter(nums) # give us an iterator
...: for num in it:
...: print(num)
...: junk = next(it) # modifying the iterator by taking next value
...:
...:
1
5
我有一个看起来很简单的问题,但由于某种原因我无法绕过它。基本上我的程序正在导致一个无限循环,我不知道为什么。 下面是我陷入的特定循环: 当我运行它时,它总是问我输入列#。我给它一个数字,它接受这个数字,$response变为True,但while循环继续运行,就好像<code>的$response</code>为false一样。我是Perl新手,所以可能我遗漏了一些东西,但是($response=
我对react钩子和效果有点陌生,在使用useEffect时遇到了问题 上面的代码是我构建的useEffect,用于使用axios获取数据库中的所有数据,并且我将所有数据放在一个称为reports的状态中。 但是当我console.log报告时,它会导致无限循环。我不知道为什么? 让我给你看一个我做的简单动作。 我正在做一个按钮,当它被点击时,报告的状态(按id)将被更新。 这是该州报告结构的样本
我正在Drools中编写一个规则集,以下情况会通过重新触发规则导致无限循环: 以下规则更改不会导致无限循环,即当ObjectB中不再引用a1时: 另一种不会导致无限循环的情况是当我将更改为 将“触发重新评估知识库中匹配对象类型的所有模式”,但由于我正在修改的字段field3没有在LHS条件中使用,我认为不应该重新评估。然而,我不能肯定这与引用a1有关。字段1位于ObjectB中,但我找不到具体的原
请问上述代码的第70行换成第71行注释的内容时,为什么会造成死循环。 题目: https://www.acwing.com/problem/content/174/
问题内容: 我正在通过“ A Go of Go”教程。 我想检查一下这个问题的答案: 注意:对方法内部的调用将使程序陷入无限循环。您可以通过先转换来避免这种情况 。为什么? 我相信这是因为调用该函数时,由于错误为非nil,将再次调用the ,依此类推,从而导致无限循环。 问题答案: 将调用将值转换为。如果该方法调用,则程序将递归直到内存不足。 您可以通过将转换为不带or 方法的值来中断递归。
我的期望: 如果用户输入的Int不在正确的范围内,程序将给他另一次机会,直到用户给出正确的类型。 所以,我需要一个块。但我有一个无限循环。 我的代码: 我读到: 重置. nextLine()扫描仪 使用扫描仪。扫描仪后面的nextLine()。nextInt() nextInt()的扫描仪错误 扫描仪在使用next()或nextFoo()后跳过nextLine()? 如何使用java.util.扫
有人能解释一下这段JavaScript代码的程序流程吗:
问题内容: 我今天发现了一件奇怪的事情,想知道是否有人可以阐明其中的区别? 运行完每个循环后,没有改变,但是在每个元素中添加了一个。我实际上使用该版本在循环内写入初始化的NumPy数组。 问题答案: 不同之处在于,一个修改数据结构本身(就地操作),而另一个仅 重新分配 变量。 仅出于完整性考虑: 是 不是总是 做就地操作,有(至少)三种例外情况: 如果 没有实现 的则方法的声明仅仅是一个速记。如果