Прежде всего, добро пожаловать в Python!
Есть несколько проблем с вашим кодом.
Сначала в Split()
вы запускаете if i == isEven:
.Это проверяет, совпадает ли i
с isEven
, а это не так.isEven
- это функция , а i
- это целое число , поэтому они никогда не могут быть одинаковыми.Поскольку вы пытаетесь проверить, является ли i
четным, вы должны передать i
в isEven()
.Затем isEven
выводит логическое значение , говоря, является ли число четным или нет:
if isEven(i):
Это проверяет, является ли i
четным.
Во-вторых,переменные имеют то, что называется scope .Область действия - это то, где переменная определена и откуда она может быть доступна.Поскольку вы определяете even
и odd
в Split()
, к ним можно получить доступ только из кода внутри функции.Вот почему вы можете добавлять к нему вещи внутри Split()
, но не print()
в конце.Чтобы это исправить, вы должны вернуть переменные even
и odd
.
Кроме того, функции должны быть вызваны в первую очередь до запуска кода внутри них.Прямо сейчас функция Split()
определена, но никогда не запускалась, поэтому even
и odd
не могут существовать, даже если вы их вернете.
Точно так же, как isEven()
вернул логическое значение, которое говоритбыло ли число четным или нечетным, и вы смогли получить к нему доступ в Split()
, вы можете вернуть из него два списка, что позволит вам получить к ним доступ и распечатать их.Чтобы сделать это, добавьте это в конце:
return even, odd
Теперь, когда вы звоните Split()
, он будет возвращать кортеж из двух списков, чтобы вы могли получить доступ котдельные элементы и печать:
output = Split(numbers) # Get the output from Split()
even = output[0] # Get the first element of the output, the evens
odd = output[1] # Get the second element of the output, the odds
print(even) # Print even
print(odd) # Print odd
Если вы все еще не до конца понимаете, почему это сработает и почему ваш текущий код возвращает ошибку, я бы посоветовал вам спросить об этом своего учителя, так как онимогу вам объяснить это лучше всего.