Форум сайта python.su
0
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)
Офлайн
568
Да не надо этого, сделайте словарь, он же прямо просится в код
{"I:" 1, "V": 5, "X": 10}
Отредактировано FishHook (Фев. 29, 2016 09:29:14)
Офлайн
0
FishHook
Да не надо этого, сделайте словарь, он же прямо просится в код
Офлайн
857
Читай строку через while.
Сначала выясняешь длину, а потом читаешь по два символа.
При этом второй не должен выйти за край строки (проверка по вычисленной длине).
Отредактировано py.user.next (Фев. 29, 2016 11:35:09)
Офлайн
568
HarrySpoterВы получаете индексы ТОЛЬКО для того, чтобы извлечь значение из другого списка. Это глупо, потому что эту операцию можно не выполнять при наличии словаря. Позиция элемента в списке обычно не несет какой-то полезной информации сама по себе. Вам надо привыкать к питонячьему стилю написания программ, а не подстраивать синтаксис языка под привычный сишный стиль.
Мне нужно получать индексы.
Офлайн
0
FishHook
Вы получаете индексы ТОЛЬКО для того, чтобы извлечь значение из другого списка. Это глупо, потому что эту операцию можно не выполнять при наличии словаря. Позиция элемента в списке обычно не несет какой-то полезной информации сама по себе. Вам надо привыкать к питонячьему стилю написания программ, а не подстраивать синтаксис языка под привычный сишный стиль.
Офлайн
186
> Мне нужно написать программу, которая будет переводить из римской системы счисления в десятичную.
И почему тебе словарь не подходит?
>>> 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
Офлайн
857
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 >>>
Офлайн
186
Так никто и не говорил что оно вообще всё правильно считает. Например при a = “MMM” будет 1000 вместо 3000. Это просто иллюстрация того как можно решить эту задачу.
Отредактировано Rodegast (Фев. 29, 2016 13:35:44)
Офлайн
857
RodegastА, а я подумал, что это решение. :)
Это просто иллюстрация того как можно решить эту задачу.
Офлайн