使用迭代查找一个list中最小和最大值,并返回一个tuple(元组)的问题

#使用迭代查找一个list中最小和最大值,并返回一个tuple(元组)
def findMinAndMax(L):

L = []
for i in range(L):
    L.append(L[i])

while i <= 0:
    if L[i] == 0:
        return False
    else:
        L[i] < L[i-1]
        min_value = L[i]
        max_value = L[i-1]
        i = i - 1

return (min_value, max_value)

L1 = [1, 2, 3]
findMinAndMax(L1)

不明白代码问题出现在哪?

参考GPT和自己的思路:

这段代码存在几个问题:

  1. 在循环中,应该使用len(L)获取列表长度,而不是range(L)。
  2. 定义了空列表L,在循环中又通过L[i]访问该列表,但是i并没有被定义或者赋值。应该使用for循环遍历列表,而不是while循环。
  3. 在判断L[i]是否为0时,应该使用i < len(L)而不是i <= 0。
  4. 在寻找最小和最大值时,条件并不正确。可以使用两个变量分别记录当前找到的最小和最大值,然后在循环中进行比较和更新。
  5. 最后应该返回一个包含最小和最大值的元组。

槽点太多,不知道该说什么了

就你这个代码,够我讲一节课的内容了。也够我发一篇质量分89分的博文了。


def findMinAndMax(L): # 定义函数,并接收参数 L 没问题
    L = [] # 。。。。你把参数的数据清了是个什么鬼?
    for i in range(L): # 你想干什么?L好歹是个list对象,你怎么可以用 range 呢?
        L.append(L[i]) # 。。。。
    
    while i <= 0:  # 别的不说, i 从哪来的?他现在的值是多少?
        if L[i] == 0: 
            return False # 别的且不说,你都说自己期待返回一个 tuple 了,你这里返回个 False 是干什么?
        else:
            L[i] < L[i-1] # 。。。。你这里是不是应该有个 if?
            min_value = L[i]  # 你确定不需要和原来的最小值再比较一次?
            max_value = L[i-1] # 你确定不需要和原来的最大值再比较一次?
            i = i - 1
    
    return (min_value, max_value) # 返回元组,没问题

L1 = [1, 2, 3] # 初始值,没问题
findMinAndMax(L1) # 调用函数,没问题

def findMinAndMax(L):

min_value = L[0]
max_value = L[0]
i = len(L)

if len(L) == 0:
    return False
else:
    while i >= 0:
        if L[i-1] < L[0]:
            min_value = L[i-1]
        else:
            max_value = L[i-1]
        i = i - 1

return (min_value, max_value)

L1 = [1, 2, 3]
findMinAndMax(L1)

修改了代码还是等不到想要的结果,这是为什么?