gpt4 book ai didi

python - 为什么这个求无序列表最小值和最大值的函数在某些情况下不起作用?

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:39 25 4
gpt4 key购买 nike

这段代码应该通过将列表分成两半来递归地找到无序列表的最小值和最大值。一旦进入一半,它就会在每一半中再次调用该函数。有两个异常(exception),如果列表只有 1 个项目,它只会返回该项目的最小值和最大值。如果列表有两个项目,那么它会直接比较这两个项目并返回适当的最小值和最大值。这是代码。

import random

unordered = [5, 2, 3, 1, 4]
#x = 0
#while x < 10:
# unordered.append(random.randrange(0,100))
# x += 1

print(unordered)

def minMax(x):
if len(x) == 1:
return x[0], x[0]
if len(x) == 2:
if x[0] > x[1]:
max_ = x[0]
min_ = x[1]
else:
max_ = x[1]
min_ = x[0]
return max_, min_
if len(x) > 2:
global min_, max_, maxA, maxB, minA
a = x[:len(x)//2]
b = x[len(x)//2:]
maxA, minA = minMax(a)
maxB, minB = minMax(b)
if maxA > maxB:
max_ = maxA
if maxB > maxA:
max_ = maxB
if minA < minB:
min_ = minA
if minB < minA:
min_ = minB
return max_, min_

print(minMax(unordered))

由于某种原因,这会返回 (4, 1)。当我设置 unordered = [1, 2, 3, 4, 5] 时,它认为 3 是最小值,但它正确地将 5 识别为最大值。

最佳答案

unordered是一个列表。为什么不使用 Python's max function ,而不是自己编写?

>>> unordered = [5, 2, 3, 1, 4]

>>> max(unordered)

5

否则为什么不做一些简单的事情

def min(list):
min = none
for x in list:
if min == none:
min = x
elif x < min:
min = x
return min

关于python - 为什么这个求无序列表最小值和最大值的函数在某些情况下不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58054180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com