функция не распечатывает все четные числа? - PullRequest
0 голосов
/ 23 октября 2018

Я должен написать это так с двумя функциями для класса, но у меня возникают проблемы с печатью всех четных чисел, а не только 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))

Следует напечатать:

[50,30]

вместо этого я получаю:

[50]

Спасибо

Ответы [ 5 ]

0 голосов
/ 23 октября 2018

В def find_even (the_list): вы должны вернуть even_list из цикла for

def find_even(the_list):
    even_list = []
    for sublist in the_list:
        if is_even(sublist):
           even_list.append(sublist)
    return even_list
0 голосов
/ 23 октября 2018

Это не работает, потому что 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]
0 голосов
/ 23 октября 2018
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 после первой итерации.

0 голосов
/ 23 октября 2018

Вы можете написать, как показано ниже

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, поэтому, когда он совпадает с первым четным числом, он добавляется в список и возвращает этот список, а затем выходит из функции.

0 голосов
/ 23 октября 2018

Вы должны использовать:

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...