下面的代码获取单个值作为a,b作为来自用户的值对,然后如果在第一对中,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=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发布于 2020-09-29 04:55:13
让我们在我的交互式python终端的帮助下手动分解它。首先,我将代码的上半部分替换为
B = np.array(([1, 5], [10, 3], [4, 6], [2, 10], [20, 11], [2, 8]))因为这才是相关的。
现在,在您的第一次迭代中,i设置为0。
i = 0第一个条件是:
B[i, 0] < B[i, 1]它的计算结果为True。所以你点击了嵌套的代码块,上面写着:
continue现在,流程返回到循环语句,并将i设置为1。
i = 1现在
B[i, 0] < 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 , 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。
https://stackoverflow.com/questions/64108131
复制相似问题