列表和最大数量

2024-09-27 18:03:16 发布

您现在位置:Python中文网/ 问答频道 /正文

问题是: 使用for循环,编写一个名为getMax4的函数,它接受一个数字列表。它确定并返回可被4整除的最大值 如果参数是空列表,则函数返回-999。如果参数列表中没有数字可被4整除,则函数返回0。 下面显示在python shell中调用函数时的输出示例:

This is the sample output

我的代码:

# What im trying to do is e.g. let's say:
List=[1,2,3] 

maximum=List[0]

for num in List:
  if num > maximum:
     maximum = num
print(maximum)

通过执行for循环,它首先与List[0]进行比较,后者是1,与列表中的“1”进行比较。比较1与1后,没有差别,所以最大值仍然是1。现在它移动到第二次迭代,maximum=List[0](在列表中为1),现在与列表中的2进行比较。现在2比最大值高,所以它将新的最大值更新为2。(抱歉英语不好) 所以问题是,当我试图用空集来做时,它会给我一个超出范围的索引。在

另一个问题是,当我输入示例输出中给定的值时,得到的结果是0。在

^{pr2}$

Tags: 函数代码示例列表for参数数字shell
2条回答

第一个问题是在highest = List[0]。由于List不能保证至少有一个项,因此如果List为空,则会出现错误。您应该添加一个支票:

def getMax4(List):
    if not List: # or if len(List) == 0:
        return -999
    ...

另一个问题是您将highest定义为第一项。为什么?第一项可能是最高的,只有当它可以被四整除。您应该将其设置为0,这样即使没有可以被4整除的数字,它仍然具有示例中所需的默认值0。在

下一个问题是返回到循环内部。等待循环完成后再尝试返回。在

一旦我们解决了所有这些问题,问题是-4比{}好,尽管它比0低。我们可以简单地添加not highesthighest等于0)的检查。新代码如下所示:

^{pr2}$

关于你的第二段代码,你需要注意你的回报放在哪里。return语句将使用值退出函数。因此,这些检查应该在循环之前和之后进行,因为您的函数要求它遍历整个列表。在

我不太喜欢将初始值设置为可能是有效输出的值。因此,这是我的代码,在这里我使用None表示没有当前最大值的情况,但是它需要在结尾处进行额外的检查,因为应该是0。在

def getMax4(lst):
    if not lst:
        return -999

    highest = None
    for num in lst:
        if num % 4 == 0 and (highest is None or num > highest):
            highest = num
    return 0 if highest is None else highest


>>> getMax4([])
-999
>>> getMax4([1, 3, 9])
0
>>> getMax4([-4, 3, -12, -8, 13])
-4
>>> getMax4([1, 16, 18, 12])
16
>>> getMax4([-4, 0, -8])
0

在最后一个例子中,0是最大值,如果0不应该被4整除为有效的最大值,那么if语句需要一个额外的条件。在

相关问题 更多 >

    热门问题