


Помогите с кодом Пайтон по списочному выражению
Дано задание: Стажёр написал программу, которая принимает натуральное число n, а затем n целых чисел. С помощью списочного выражения нужно было вывести только числа, которые делятся на 2, но не делятся на 4 — в одну строку через пробел.
Мой код
numbers = [int(input()) for i in range(int(input()))]
answer = [num for num in range(numbers) if num % 2 == 0 and num % 4 != 0]
print(*answer)
Ошибка: int() argument must be a string, a bytes-like object or a real number, not 'list' (Ссылка: аргумент int() должен быть строкой, байтоподобным объектом или вещественным числом, а не "списком")
Где у меня ошибка?
Проблема возникает из-за неправильного использования переменной numbers в вашем списочном выражении. Вместо того, чтобы использовать numbers как диапазон для генерации чисел, вы должны использовать список numbers, который вы уже получили через ввод.
numbers = [int(input()) for i in range(int(input()))]
answer = [num for num in numbers if num % 2 == 0 and num % 4 != 0]
print(*answer)
Теперь ваш код должен корректно работать. Он создает список numbers, содержащий введенные пользователем числа, а затем использует списочное выражение для фильтрации чисел, которые делятся на 2, но не делятся на 4, и выводит результат через пробел.
Ваша ошибка заключается в том, что вы используете range(numbers), где numbers является списком. Функция range() принимает целые числа, а не список. Вместо этого, вам нужно итерировать по списку numbers напрямую. Вот исправленный код:
numbers = [int(input()) for i in range(int(input()))]
answer = [num for num in numbers if num % 2 == 0 and num % 4 != 0]
print(*answer)
Тебе нужно итерироваться по самому списку numbers, а не по диапазону, созданному из него. Вот исправленный код: