Решён
Какой код надо написать на Python - не понимаю задание

Елена Data Python
3.4k
6

Задали на курсе написать программу на Python но я вообще не понимаю что от меня хотят. Вот задание:

"Написать функцию которая принимает список чисел и возвращает новый список только с четными числами из исходного."

С чего начать вообще? Что значит "принимает список"? Как написать на Python?

Решение
53
Участник • 1 ответ

Разберем по шагам что вообще просит задание.

"Функция" - это блок кода с именем, который можно вызывать много раз. Создается ключевым словом def.

"Принимает список" - значит функция берет данные снаружи через аргумент в скобках.

"Возвращает новый список" - функция должна отдать результат через return.

Вот вариант без магии, максимально понятный:

def get_even_numbers(numbers):
    result = []  # пустой список для результата
    for n in numbers:  # идем по каждому числу
        if n % 2 == 0:  # проверяем: четное ли
            result.append(n)  # если да - добавляем
    return result  # отдаем результат

# вызываем функцию:
print(get_even_numbers([1, 2, 3, 4, 5]))
# результат: [2, 4]

Когда поймете логику цикла, можно посмотреть на более короткую запись через list comprehension - это то что написали выше в первом ответе.

Аватар Елена Data

Спасибо огромное!! Теперь понятно откуда что берется. Заработало!

31
Участник • 1 ответ
def get_even(numbers):
    return [n for n in numbers if n % 2 == 0]

# пример использования
result = get_even([1, 2, 3, 4, 5, 6])
print(result)  # выведет [2, 4, 6]
Аватар Елена Data

Ой, а что такое % 2 == 0 ?

Аватар Елена Морева

% это остаток от деления. Четное число при делении на 2 всегда дает остаток 0. Нечетное дает остаток 1. Вот и весь смысл.

8
Участник • 1 ответ

Еще можно через filter:

def get_even(numbers):
    return list(filter(lambda x: x % 2 == 0, numbers))

Но для начинающих это уже лишнее, сначала разберитесь с циклом.

17
Участник • 1 ответ

Кстати пока разбираетесь: официальная документация Python по-русски не очень, но на английском там все примеры очень понятные. Плюс есть сайт pythontutor.com - там можно запустить код и посмотреть пошагово как он выполняется, каждая переменная видна. Очень помогает на старте понять что вообще происходит.

12
Участник • 1 ответ

Ещё раз прочитайте задание. Там написано "принимает список и возвращает новый список" - это дословная спецификация функции. Прежде чем гуглить код, нужно понимать базовые концепции: что такое функция, аргументы, возвращаемое значение. Без этого вы скопируете код но не научитесь ничему.

Это не укор - просто совет: пройдите сначала главу про функции в любом учебнике по Python. Задание после этого решите сами за пять минут.

1
Участник • 1 ответ

мне кажется можно еще через numpy сделать, там что то типа arr[arr % 2 == 0] но я точно не помню синтаксис, могу ошибаться

Написать ответ

Премодерация гостей

Вы отвечаете как гость. Ваш ответ будет скрыт до проверки модератором. Чтобы ответ появился сразу и вы получали репутацию — войдите в аккаунт.

Будьте вежливы и соблюдайте правила платформы.