首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何中断if循环并从python中的下一个元素重新开始

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

Stack Overflow用户
提问于 2020-09-29 03:02:18
回答 1查看 329关注 0票数 1

下面的代码获取单个值作为ab作为来自用户的值对,然后如果在第一对中,B[0,0]<B[0,1]将跳过第一对,然后第二个条件将继续,直到满足条件。

因此,假设第一个条件对应该被跳过,并且第二个条件的计算是通过使用前一个答案继续到下一个,该前一个答案是11 (10-3)+4=11 since 11>6 (11-6)+2=7 7<10,然后停止并从下一个条件[20,11]重新开始。因此,因为[20,11]满足语句(20-11)+2=1111>8,所以它应该打印4对的索引,但我的代码打印索引1作为答案。

代码语言:javascript
复制
import numpy as np
a = np.array(input(), dtype=int)
B=[]
for i in range(a):
    b = np.array(input().split(), dtype=int)
    B.append(b)
B = np.array(B)
for i in range(a):
    if B[i,0]<B[i,1]:
        continue
    if (B[i,0]-B[i,1])+B[i+1,0]>B[i+1,1]: 
        B[i+1,0]=B[i,0]-B[i,1]           
        print(i)
        break
EN

回答 1

Stack Overflow用户

发布于 2020-09-29 04:55:13

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

代码语言:javascript
复制
B = np.array(([1, 5], [10, 3], [4, 6], [2, 10], [20, 11], [2, 8]))

因为这才是相关的。

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

代码语言:javascript
复制
i = 0

第一个条件是:

代码语言:javascript
复制
B[i, 0] < B[i, 1]

它的计算结果为True。所以你点击了嵌套的代码块,上面写着:

代码语言:javascript
复制
continue

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

代码语言:javascript
复制
i = 1

现在

代码语言:javascript
复制
B[i, 0] < B[i, 1]

计算结果为False。因此,跳过包含continue的块,我们转到下一行。具有以下条件的if语句:

代码语言:javascript
复制
(B[i, 0] - B[i, 1]) + B[i + 1, 0] > B[i + 1, 1]

根据我的python shell,它的计算结果是True。所以我们执行嵌套的代码块。逐行:

代码语言:javascript
复制
// This changes some state but is irrelevant to the control flow,
B[i + 1, 0] = B[i , 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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64108131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档