keys = ['I', 'V', 'X', 'L', 'C', 'D', 'M'] num = [1,5,10,50,100,500,1000] a, total = 'VIII', 0 for i in a: total += num[keys.index(i)] print(total)
Нужно в цикле обращаться к i и к следующему значению i. Как это сделать?
keys = ['I', 'V', 'X', 'L', 'C', 'D', 'M'] num = [1,5,10,50,100,500,1000] a, total = 'VIII', 0 for i in a: total += num[keys.index(i)] print(total)
{"I:" 1, "V": 5, "X": 10}
FishHook
Да не надо этого, сделайте словарь, он же прямо просится в код
HarrySpoterВы получаете индексы ТОЛЬКО для того, чтобы извлечь значение из другого списка. Это глупо, потому что эту операцию можно не выполнять при наличии словаря. Позиция элемента в списке обычно не несет какой-то полезной информации сама по себе. Вам надо привыкать к питонячьему стилю написания программ, а не подстраивать синтаксис языка под привычный сишный стиль.
Мне нужно получать индексы.
FishHook
Вы получаете индексы ТОЛЬКО для того, чтобы извлечь значение из другого списка. Это глупо, потому что эту операцию можно не выполнять при наличии словаря. Позиция элемента в списке обычно не несет какой-то полезной информации сама по себе. Вам надо привыкать к питонячьему стилю написания программ, а не подстраивать синтаксис языка под привычный сишный стиль.
>>> ds = {"C": 100, "D": 500, "I": 1, "M": 1000, "L": 50, "V": 5, "X": 10} >>> a = "IX" >>> stek = [ ds[x] for x in a ] >>> reduce(lambda x, y: x - y if x > y else x + y, stek[::-1]) 9
Rodegast>>> a = "IX"
>>> ds = {"C": 100, "D": 500, "I": 1, "M": 1000, "L": 50, "V": 5, "X": 10} >>> a = "MCMVIIIIV" >>> stek = [ ds[x] for x in a ] >>> reduce(lambda x, y: x - y if x > y else x + y, stek[::-1]) 1906 >>>
RodegastА, а я подумал, что это решение. :)
Это просто иллюстрация того как можно решить эту задачу.