При этом там первая строчка за меня уже напечатана была зачем-то
В программировании большое внимание уделяется модульности кода, т.е. возможности оперировать отдельными частями программы и повторно использовать их в других целях. Одной из единиц, на которые код делится в языке Python, является функция (ключевое слово
def). К другим можно отнести классы и модули, но до них Вы ещё доберётесь.
Почему решение авторы хотят в виде функции, а не полноценной программы? Функции можно скормить тот же ввод с клавиатуры и сразу вывести результат на экран:
print(even_or_odd(int(input())))
а можно скормить константу и сохранить результат в переменную:
В обоих случаях сама
even_or_odd устроена одинаково. Решение, не отделяющее логику от ввода/вывода, повторно использовать сложнее: его придётся редактировать, чтобы использовать в других условиях.
Для
x%2==0 разницы почти не видно, но если бы вместо проверки на чётность было, предположим, решение какой-нибудь обратной задачи, разница между передачей параметров через аргументы функции и через файлы/клавиатуру стала бы гораздо заметнее. В первом случае встроить готовую реализацию алгоритма в более сложную программу почти тривиально (программе достаточно сформировать и передать аргументы в нужном виде), во втором - нет: нужно притворяться, как будто параметры подготовил человек и сложил в нужное место, а потом считывать ответ из файлов/с экрана, разбирая текст обратно в структуры данных, из которых он был получен. Been there, done that, got a stupid T-shirt.
См. также про
т.н. чистоту функций: предложенное решение с
def является чистым, а с
input() - нет.