Для того чтобы правильно решить задачу из книги по Python от Э.Мэтиза, необходимо изучить условия задачи и код, который приводится в книге, и следовать инструкциям для ее решения.
Что касается появления значения None после последнего значения в выводе принта, это может быть вызвано тем, что последнее значение в цикле или функции, которое возвращает None. Например, если вместо использования return-оператора в функции используется просто print(), то по умолчанию функция вернет None.
Для исправления ситуации, необходимо убедиться, что все используемые функции возвращают значение с помощью return-оператора, а не только выводят его на экран с помощью print(). Также можно например собирать значения в список и потом выводить его после завершения цикла, чтобы избежать появления значения None после последнего значения.