Ваш код выглядит немного дезорганизованным для меня, и я думаю, что вы, возможно, захотите подумать о выполнении шагов, описанных в Как разрабатывать программы Рецепт дизайна:
Шаг первый: вы можете написать заявление о цели для вашей программы? Следует сказать, что делает функция.
Шаг второй: вы можете написать контракт? Должно быть указано, какие данные принимает программа, и
что он производит. Здесь нужно быть конкретным, и любые данные, которые вы укажете, должны быть либо встроенными, либо иметь явное «определение данных».
Шаг третий: напишите несколько тестовых случаев! Укажите пример ввода и ожидаемый результат.
Чтобы узнать больше о рецептах дизайна, ознакомьтесь с Как разрабатывать программы .