Rudey
разбил программу на модули, есть три модуля и главный файл(main.py).
Разбил неправильно. Всё меню должно быть в одном модуле. Функции конвертации должны быть в другом модуле. Функции конвертации не должны ничего вводить или выводить (должны быть чистыми функциями). В функцию конвертации подаётся одно значение, а возвращается из неё новое значение.
Например:
Есть модуль math в питоне, а в нём есть функция sin(). В функцию math.sin() мы подаём значение x, а она в ответ на это возвращает значение синуса в этой точке. Функция ничего не вводит с экрана и ничего не выводит на экран. Она используется только для правильного отображения входного значения в выходное.
Вот так же и у тебя должно быть.
Rudey
Также постарался исключить все ошибки которые могли-бы возникнуть.
Везде есть лишняя строчка
Исключение и так возникнет, так как выше результат функции input() уже преобразуется во float(). Соответственно, этой второй строчкой ты делаешь float(float()) и она никогда не даст исключения, поэтому она лишняя.
Rudey
Чтобы программа корректно работала нужно скачать все файлы и поместить в одну папку, далее запустить main.py.
Да, вот у тебя как раз не хватает документации для пользователей программы. Поэтому тебе и приходится объяснять на форуме, как её запустить на выполнение. В реале же все эти твои объяснения должны распространяться вместе с программой в её дистрибутиве. Сделай файл README в проекте и пиши туда информацию для пользователей и как им запустить твою программу. Когда пользователь скачает твой архив, он откроет файл README и всё узнает оттуда.
Rudey
Дайте оценку коду, логике программы
Код чистый.
Логика размазана по программе. Чуть что нужно будет изменить в программе и тебе придётся заново писать всю программу. Нужно изолировать логику в программе и распределять ответственность за разные задачи по разным функциям в коде.
В данном же случае у тебя должно что-то выводиться на экран и должно что-то считаться. Вместо того, чтобы выводить на экран значения в одной функции, производить вычисления значений в другой функции, а передавать вычисленные значения из функции вычисления в функцию вывода третьей функцией, у тебя всё смешано воедино и всё друг на друга влияет.
Нужно вводить неконвертированные значения от пользователя с помощью первой функции.
Нужно конвертировать введённые неконвертированные значения с помощью второй функции.
Нужно выводить на экран конвертированные значения с помощью третьей функции.
Нужно ввести неконвертированные значения, передать введённые неконвертированные значения на конвертацию, передать конвертированные значения на вывод с помощью четвёртой функции.