Discuss / Python / 求解,我这个为什么返回的总是L[0]和L[-1]啊,找不到问题在哪

求解,我这个为什么返回的总是L[0]和L[-1]啊,找不到问题在哪

Topic source

def MM(L):

     if not L :

         return (None,None)

else:

    for x in L:

         if x>=L[0]:

            max=x

   for y in L:

        if y<=L[0]:

           min=y

return(max,min)

求解一下我这个问题在哪

(我也是初学者,如有错误,感谢指正)问题在于for循环下面的判断。if x>=L[0]意味着在进行循环遍历整个数组时,把每个数都拿来与数组中第一个数进行大小比较,如果前者不小于后者则令其为max。现在假设某次执行后max被替换为了X1,那么在后续再次执行时,仍会拿X2去与数组的第一个数作比较,因此最终返回值总会是L[0]和L[-1]。可以这样子修改:在else下面,for循环之前,令max_nun=L[0],min_num=L[0],(初始化的索引值可以随意,因为最终都会遍历),把后续判断的L[0]分别改为max_num与min_num,这样能使后被判断的值总能与之前的最值进行比较。


  • 1

Reply