def maxdiff(x):
i = 1
max = x[0]
min = x[0]
while i < len(x):
if x[i] > max:
max = x[i]
elif x[i] < min:
min = x[i]
else:
continue
i = i+1
return max-min
如果x = [2,4,6,1,3,9]
,结果应该是9-1=8。但是,该函数没有完成执行
调试帮助我理解了它不会执行else
语句。它直接跳到i=i+1
在这种情况下,x[4]=3,它既不大于max
也不小于min
。因此,函数跳回while循环,而不增加i
。为什么会这样
由于您正在迭代输入数组中的值,因此应重新构造以使用for循环:
这不仅可以更干净,还可以降低非端接环路的风险
或者
您始终可以使用内置程序(其中有many):
相关问题 更多 >
编程相关推荐