函数不会打印出所有偶数?

时间:2018-10-23 06:31:07

标签: python function for-loop

我必须用两个类函数编写这种代码,但是在打印所有偶数而不是1时遇到了麻烦。

stroke-width

应打印:

2*6=12

相反,我得到:

viewBox="-6 -6 609 416"

谢谢

5 个答案:

答案 0 :(得分:1)

def is_even(the_value):
    if the_value % 2 == 0:
        return True
    else:
        return False

def find_even(the_list):
    even_list = []
    for sublist in the_list:
        if is_even(sublist):
            even_list.append(sublist)
    return even_list


a_list = [50,23,30,41,99]
print(find_even(a_list))

您对return even_list的缩进不正确,导致该方法在第一次迭代后一到达return语句就终止并返回列表。

答案 1 :(得分:1)

您可以像下面这样写

def is_even(the_value):
  if the_value % 2 == 0:
      return True
  return False

def find_even(the_list):
  even_list = [item for item in the_list if is_even(item)]
  return even_list


a_list = [50,23,30,41,99,70]
print(find_even(a_list))

输出

[50, 30, 70]

说明

您的代码不起作用,因为您的return even_list处于if条件内,因此当它与第一个偶数匹配时,它将追加到列表中并返回该列表,然后退出该函数。

答案 2 :(得分:0)

您应该使用:

def is_even(the_value):
    if the_value % 2 == 0:
        return True
    else:
        return False

def find_even(the_list):
    even_list = []
    for sublist in the_list:
        if is_even(sublist):
            even_list.append(sublist)
            # return even_list
    return even_list


a_list = [50,23,30,41,99]
print(find_even(a_list))

输出:

[50, 30]

答案 3 :(得分:0)

它不起作用,因为return仅返回一次。

下面的内容也是如此,更短,更快:

def find_even(l):
    return [i for i in l if not i%2]

演示:

def find_even(l):
    return [i for i in l if not i%2]
a_list = [50,23,30,41,99]
print(find_even(a_list))

输出:

[50, 30]

答案 4 :(得分:0)

在def find_even(the_list)中:您应在for循环外返回even_list

def find_even(the_list):
    even_list = []
    for sublist in the_list:
        if is_even(sublist):
           even_list.append(sublist)
    return even_list