Anton fon Faust: оттуда, что это явно функция которая на вход получает строку со списком слов. Никто не гарантировал что в нём не будет слов которые могут частично совпадать с другими словами.
Если вы пишете функцию под конкретную строку, то проще было написать return 'menu';
Потому что вы зачем-то изменяете массив в процессе хождения по нему.
Просто попробуйте аккуратно на листочке «выполнить» свою программу. Ну или хотя бы в дебаггере по шагам пройдите
Nwton: Для это можно сделать например так: https://github.com/pasaran/descript/blob/master/li...
Не то что бы это идеальный код, но он решает задачу разделения модуля на несколько файлов, которые в результате становятся одним модулем
На флоатах это решается одной строчкой