Первый вариант - функциональный, второй - процедурный.
Рекомендую функциональный, потому что процедурный вариант жуткий щиткод и кринж, да и питон сам по себе язык функциональный. Удачи.
1. Поиск подстроки в строке, возвращает порядковый номер первого символа подстроки в строке
2. Определение длины строки
3. Выбор части строки по заданным порядковым номерам символов
<span>4. Конкатенация (объединение) строк </span>
<span><span>I
<span> 1</span></span><span>
V
<span> 5</span>
</span><span>X
<span> 10</span>
</span><span>L
<span> 50</span>
</span><span>C
<span> 100</span>
</span><span>D
<span> 500</span>
</span><span>M
<span> 1000</span></span></span>
Ответ: 1648.