Улучшить можно по разным направлениям.
- С одной стороны, новые версии python предоставляют новые возможности, которые могут позволить сделать код плотнее и аккуратнее, к примеру заменить гирлянды if/elif на match/case.
- С другой стороны, можно доработать надежность программы, обработав крайние случаи, потенциальные ошибки и др.
- С третьей стороны - рефакторинг по подобным друг другу фрагментам, где делается практически одно и то же, к примеру функции про рестарт практически однотипны и можно свести к одной функции с набором параметров.
- А можно рефакторить еще глубже, сделать класс типовых приложений, обладающий типовыми методами, от него наследовать каждое приложение вашей программы, ну и всё вот это вот ООП и т.п.
- Можно все текстовые строки вынести в файл статики и оттуда подтягивать, и если хорошенько подумать, то еще и сделать возможность выбора языка.
- А еще обвешать всё юнит-тестами.
Да мало ли…
Глубоко не вчитывался, но есть над чем поработать.