Я хочу преобразовать числа в римские обозначения. Мне дали список, который выглядит следующим образом:
conv = [[1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'],
[ 100, 'C'], [ 90, 'XC'], [ 50, 'L'], [ 40, 'XL'],
[ 10, 'X'], [ 9, 'IX'], [ 5, 'V'], [ 4, 'IV'],
[ 1, 'I']]
где ввод должен быть целым числом от 0 до 3999. Итак, я хочу создать функцию, которая принимает аргумент (целое число) и преобразует его. У меня есть небольшая проблема решить это. Любая помощь будет оценена по достоинству. Вот как я думаю:
Сначала мне нужен ввод целого числа, которое я сохраняю в переменной, поэтому я буду использовать что-то вроде
number = input("Enter a number between 0 and 3999: ")
conv = [[1000, 'M'], [900, 'CM'], [500, 'D'], [400, 'CD'],
[ 100, 'C'], [ 90, 'XC'], [ 50, 'L'], [ 40, 'XL'],
[ 10, 'X'], [ 9, 'IX'], [ 5, 'V'], [ 4, 'IV'],
[ 1, 'I']]
На последнем шаге я хочу использовать 2 цикла для решения реальной проблемы. Что выглядит примерно так:
for char in number:
i = 0;
while i < len(conv):
if int(char) == int(conv[i][0]):
print(conv[i][1])
i += 1;
else:
i += 1;
Я знаю, что этот код неверен, но, возможно, это не так. Сначала я хочу перебрать каждый «символ» (символ) в номере строки. Для этой цели я также определю переменную «i», которой я присвоил значение 0. Эта переменная «i» будет использоваться в цикле while, который должен выполняться до тех пор, пока i меньше длины списка conv. Затем я хочу сравнить, равен ли целочисленный char целочисленной части conv по индексу [i][0] (0, потому что я всегда хочу сравнивать с числовыми частями в списке, и я, потому что я хочу перебрать все возможные , Если они совпадают, то я хочу что-то сделать, я действительно не знаю, что я хочу сделать на этом шаге, но я хотел бы что-то распечатать На этом шаге я хотел бы сказать программе построить римскую запись , а также увеличить i. Иначе просто увеличить i. Я должен заставить программу понять, что 12 представлено как XII и т. д. Любые идеи, как я мог бы решить эту проблему. Спасибо :)