Ответ короткий: потому, что вы плохо знаете python. Из рук вон плохо. Инструмент сложный, и его надо изучать.
Ответ длинный:
- приведенный код либо неправильно построен в части отступов, либо побился, его надо заново вставить внутрь тегов code.
- в коде вы переопределяете некоторые имена, которые являются встроенными функциями Python или методами некоторых встроенных классов, например file, list, add и т.п.
Так делать не рекомендуется,точнее, в вашем случае не рекомендуетсяесли вы не делаете это осмысленно, понимая, что вы именно переопределяете и именно встроенную функцию, и понимаете глубокий смысл и последствия. Короче, не делайте так.
(В данном случае add не ломается, но все равно не надо. Выбирайте имена переменных более уникальные. Хотя бы command_edit, command_list и т.п.
- Вы открываете файл, но дальне ничего с ним не делаете. Почему-то в вашем коде предполагается, что текстовый файл при открытии волшебным образом превращается в contacts, который вроде как список словарей или что-то в таком роде (какую-то разновидность JSON?) Но он в коде не превращается ни во что, даже в тыкву. Переменная contacts, которая по-идее должна содержать в себе вышеназванную структуру, не определена в коде.
Кроме того, вы не читаете документацию, в т.ч. этого ресурса, где задаете вопросы. Формулировать название вопроса надо в соответствии с правилами построения вопросительных предложений, а не пихнуть в конце вопрос, чтобы система отстала.
Писать за вас тут решение вашей задачи никто не будет; а если таки найдется кто-то, то поверьте, они преднамеренно напишут так, что работать будет, но вы не поймете, и при случае не сможете ни поправить, ни объяснить кому-либо (преподавателю особенно).