Найти - Пользователи
Полная версия: Обращение к следующему символу стоки.
Начало » Python для новичков » Обращение к следующему символу стоки.
1 2 3
HarrySpoter
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. Как это сделать?
FishHook
Да не надо этого, сделайте словарь, он же прямо просится в код
{"I:" 1, "V": 5, "X": 10}
HarrySpoter
FishHook
Да не надо этого, сделайте словарь, он же прямо просится в код

Мне нужно получать индексы. Словари этого не позволяют
py.user.next
Читай строку через while.
Сначала выясняешь длину, а потом читаешь по два символа.
При этом второй не должен выйти за край строки (проверка по вычисленной длине).
FishHook
HarrySpoter
Мне нужно получать индексы.
Вы получаете индексы ТОЛЬКО для того, чтобы извлечь значение из другого списка. Это глупо, потому что эту операцию можно не выполнять при наличии словаря. Позиция элемента в списке обычно не несет какой-то полезной информации сама по себе. Вам надо привыкать к питонячьему стилю написания программ, а не подстраивать синтаксис языка под привычный сишный стиль.
HarrySpoter
FishHook
Вы получаете индексы ТОЛЬКО для того, чтобы извлечь значение из другого списка. Это глупо, потому что эту операцию можно не выполнять при наличии словаря. Позиция элемента в списке обычно не несет какой-то полезной информации сама по себе. Вам надо привыкать к питонячьему стилю написания программ, а не подстраивать синтаксис языка под привычный сишный стиль.

Нет, мне нужные именно индексы. Мне нужно написать программу, которая будет переводить из римской системы счисления в десятичную.

Нужно реализовать вычитание. Если перед X стоит I, то к конечный результат total += -1+10.

Возможно, плохо объяснил, надеюсь, что поймёте.
Rodegast
> Мне нужно написать программу, которая будет переводить из римской системы счисления в десятичную.

И почему тебе словарь не подходит?
>>> 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
py.user.next
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
>>>
Должно быть 1984.
Rodegast
Так никто и не говорил что оно вообще всё правильно считает. Например при a = “MMM” будет 1000 вместо 3000. Это просто иллюстрация того как можно решить эту задачу.
py.user.next
Rodegast
Это просто иллюстрация того как можно решить эту задачу.
А, а я подумал, что это решение. :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB