如何中断if循环并从python中的下一个元素重新开始

问题描述

以下代码用户那里获得一对值,分别为ab,然后如果在第一对中,B[0,0]<B[0,1]将跳过第一对,然后第二个条件将持续到条件满足。

假设B=([1,5],[10,3],[4,6],[2,10],[20,11],8]),因此,应该跳过第一对,并使用先前的答案(10-3)+4=11 since 11>6,继续计算第二个条件为11,因此,(11-6)+2=7由于{ {1}},然后停止并从下一对7<10重新开始。因此,由于[20,11]满足语句[20,11](20-11)+2=11,因此它应打印成对的索引11>8,但我的代码将打印索引4作为答案。 / p>

1

解决方法

在交互式python终端的帮助下,我们手动进行分解。首先,我将代码的上半部分替换为

B = np.array(([1,5],[10,3],[4,6],[2,10],[20,11],8]))

因为这很重要。

现在,在您的第一次迭代中,我设置为0。

i = 0

第一个条件是:

B[i,0] < B[i,1]

,其值为True。因此,您点击了以下嵌套块:

continue

现在,流程返回到loop语句,并将i设置为1。

i = 1

现在

B[i,1]

评估为False。因此,带有continue的块将被跳过,然后转到下一行。符合以下条件的if语句:

(B[i,0] - B[i,1]) + B[i + 1,0] > B[i + 1,1]

根据我的python shell,其计算结果为True。因此,我们执行嵌套块。逐行:

// This changes some state but is irrelevant to the control flow,B[i + 1,0] = B[i,1]

// So the next line is executed.
print(i)
// Since i is currently set to 1,your program prints '1'

// Now the next line is executed
break    
// This ends the execution of the loop completely.  Your code will now terminate.

因此,您的代码将按预期输出1。