for循环的主体的执行多次被跳过。
我尝试运行此代码,但得到了意外的结果。我在调试时注意到,有时for循环的主体只是不执行。我检查了缩进错误,但看起来没问题。
def getOutput (X):
# Write your code here
sum = 0
if int(X) not in setA:
setA.append(int(X))
setA.sort()
for a in range(len(setA)-1):
if a == 0:
low = 1
else:
low = setA[a-1] + 1
sum += low
if a == (len(setA)-1):
high = N
else:
high = setA[a+1] - 1
sum += high
#print(setA, a, low, high)
return sum
N, M = map(int, input().split())
setA = []
while M > 0:
X = input()
out_ = getOutput(X)
print (out_)
M -= 1
Sample Input:
10 10
2
7
5
9
6
1
8
10
3
4
Expected output for the above input:
11
20
30
46
58
61
77
96
102
110
答案 0 :(得分:1)
for循环应为for a in range(len(setA)):
代替for a in range(len(setA)-1):
我尝试遍历列表中所有索引的循环。 range(len(setA)-1)排除列表最后一个元素的迭代。 这是因为范围函数默认情况下会排除最后一个元素。
例如:range(5)将给我们[0,1,2,3,4]。
因此无需在上面的代码中添加-1。