【发布时间】:2020-09-28 19:02:18
【问题描述】:
以下代码从用户获取单个值作为 a 和 b 作为一对值,然后如果在第一对中 B[0,0]<B[0,1] 将跳过第一对,然后第二个条件将继续直到条件满足。
假设B=([1,5],[10,3],[4,6],[2,10],[20,11],[2,8]),因此,第一对应该被跳过,第二个条件的计算是(10-3)+4=11 since 11>6继续下一个答案是11所以(11-6)+2=7因为7<10然后停止并从下一对[20,11]。因此,由于 [20,11] 满足声明 (20-11)+2=11 和 11>8 它应该打印对的索引 4 但我的代码打印索引 1 作为答案。
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
【问题讨论】:
-
我不认为我理解整个流程,但
continue和break有助于跳过和停止循环。 -
为什么
1不是正确答案?在我看来,1 和 4 的条件都成立吗?如果您删除break语句,您还将获得4。 -
条件应该一直到最后一对。对 1 只满足一步,它在对 [2,10] 处停止,但对 [20,11] 满足数组的其余部分,在这种情况下只是 [2,8]。我删除了中断并引发错误“索引 5 超出轴 0 的范围,大小为 5”
标签: python for-loop if-statement break continue