为什么即使数字为负数,我的函数也不会返回最大值

时间:2017-11-17 06:32:21

标签: python python-3.x

我需要创建一个返回列表中最大偶数的函数。我创建了这个,但它不适用于负数,我不知道为什么。

def largest_even(list_int):
large = False
print(list_int)
for i in list_int:
    if i % 2 == 0:
        i = large
for i in list_int:
    if i % 2 == 0:
        if i > large:
            large = i
return large

6 个答案:

答案 0 :(得分:1)

根据上述评论,您可以通过以下方式解决问题:

max(x for x in list_int if x % 2 == 0)

您的代码必须按如下方式进行修改,以便在传递的列表中获得最大的偶数:

1-您需要修复代码中的缩进(我猜这是由于复制和粘贴)

2-您可以找到最大的:

large = None 
for x in list_int:
     if x % 2 == 0:
         if large is None: 
             large = x
         if x > large:
             large = x

答案 1 :(得分:0)

为什么用False初始化大?我想你不需要这样做。 第二个错误是在第六行(i =大)。它应该是(large = i),因为你想将第一个出现的偶数存储到变量而不是列表中该位置的变量。

答案 2 :(得分:0)

如果你正在寻找最大的偶数,那么 dcg 的回答是正确的

如果你问为什么你的代码不起作用:

  • 首先,看起来您已嵌套for,因此除非您有充分的理由

    i LI>
  • 其次,此i = large应为large = i

重写:

def largest_even(list_int):
    large = False
    for i in list_int:
        if i % 2 == 0:
            large = i
        for j in list_int:
            if j % 2 == 0:
                if j > large:
                    large = j
    return large

答案 3 :(得分:0)

您的一个问题是,您要将i设置为False,然后尝试检查您当前的号码是否大于False,这不会给您所需的输入。相反,尝试以下单行:

def largest_even(list_int):
    return max([i for i in list_int if not i%2])
>>> largest_even([1, 3, 5, 7, 9, 333, 4])
4
>>> largest_even([1, 3, 5, 7, 9, 332, 4])
332
>>> 

答案 4 :(得分:0)

只有一行是错误的。应该是大= i。其余代码完全正常

def largest_even(list_int):
    large = False
    print(list_int)
    for i in list_int:
        if i % 2 == 0:
            large = i
    for i in list_int:
        if i % 2 == 0:
            if i > large:
                large = i
    return large

答案 5 :(得分:0)

代码运行正常。我想你想打印最大的偶数,即使它是负数。在这种情况下,你应该使用abs()函数。 而且你使用for循环两次我认为是没用的。下面是代码,即使它是负数,它也适用于给定的最大偶数。

def largest_even(list_int):
    large = 0
    print(list_int)
    for i in list_int:
        if i % 2 == 0:
            if abs(i) > abs(large):
                large = i
    return large

print(largest_even([1,2,3,1,5,-10]))

输出:

[1, 2, 3, 1, 5, -10]
-10