Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 29, 2016 09:09:03

HarrySpoter
Зарегистрирован: 2016-01-02
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение к следующему символу стоки.

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. Как это сделать?

Офлайн

#2 Фев. 29, 2016 09:28:57

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Обращение к следующему символу стоки.

Да не надо этого, сделайте словарь, он же прямо просится в код

{"I:" 1, "V": 5, "X": 10}



Отредактировано FishHook (Фев. 29, 2016 09:29:14)

Офлайн

#3 Фев. 29, 2016 10:22:38

HarrySpoter
Зарегистрирован: 2016-01-02
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение к следующему символу стоки.

FishHook
Да не надо этого, сделайте словарь, он же прямо просится в код

Мне нужно получать индексы. Словари этого не позволяют

Офлайн

#4 Фев. 29, 2016 11:32:51

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Обращение к следующему символу стоки.

Читай строку через while.
Сначала выясняешь длину, а потом читаешь по два символа.
При этом второй не должен выйти за край строки (проверка по вычисленной длине).



Отредактировано py.user.next (Фев. 29, 2016 11:35:09)

Офлайн

#5 Фев. 29, 2016 11:39:25

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Обращение к следующему символу стоки.

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



Офлайн

#6 Фев. 29, 2016 11:46:53

HarrySpoter
Зарегистрирован: 2016-01-02
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Обращение к следующему символу стоки.

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

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

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

Возможно, плохо объяснил, надеюсь, что поймёте.

Офлайн

#7 Фев. 29, 2016 12:41:21

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Обращение к следующему символу стоки.

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

И почему тебе словарь не подходит?

>>> 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



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#8 Фев. 29, 2016 13:25:43

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Обращение к следующему символу стоки.

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.



Офлайн

#9 Фев. 29, 2016 13:29:32

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Обращение к следующему символу стоки.

Так никто и не говорил что оно вообще всё правильно считает. Например при a = “MMM” будет 1000 вместо 3000. Это просто иллюстрация того как можно решить эту задачу.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Фев. 29, 2016 13:35:44)

Офлайн

#10 Фев. 29, 2016 13:39:52

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Обращение к следующему символу стоки.

Rodegast
Это просто иллюстрация того как можно решить эту задачу.
А, а я подумал, что это решение. :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version