PYYYYYYYYYYTHOOOOOOOOOON Напишите функцию, которая заменяет во всей строке все римские числа на
соответствующие десятичные числа. Пример: Введите строку: В MMXIII году в школе CXXIII состоялся очередной выпуск XI классов. Результат: В 2013 году в школе 123 состоялся очередной выпуск 11 классов.Ответы на вопрос
Ответ:
s = input()
lst = s.split(' ')
rim = ['I', 'V', 'X', 'L', 'C', 'D', 'M']
v = {'I': 1, 'V' : 5, 'X' : 10, 'L' : 50, 'C' : 100, 'D' : 500, 'M' : 1000}
for i in range(len(lst)):
if (rim[0] in lst[i]) or (rim[1] in lst[i]) or (rim[2] in lst[i]) or (rim[3] in lst[i]) or (rim[4] in lst[i]) or (rim[5] in lst[i]) or (rim[6] in lst[i]):
num = 0
for j in lst[i]:
num += v[j]
lst[i] = str(num)
print(*lst)
Для решения этой задачи вам потребуется использовать регулярные выражения. В Python для работы с ними обычно используется модуль `re`. Вот функция, которая выполняет необходимую замену:
```python import re
def заменить_римские_числа(строка): # Словарь для соответствия римских и десятичных чисел римские_числа = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
# Функция для замены римских чисел в строке def заменить_римское_число(римское_число): десятичное_число = 0 предыдущее_значение = 0
for символ in reversed(римское_число): текущее_значение = римские_числа[символ]
if текущее_значение < предыдущее_значение: десятичное_число -= текущее_значение else: десятичное_число += текущее_значение
предыдущее_значение = текущее_значение
return str(десятичное_число)
# Заменяем римские числа в строке с использованием регулярных выражений новая_строка = re.sub(r'\b[IVXLCDM]+\b', lambda x: заменить_римское_число(x.group()), строка)
return новая_строка
# Пример использования ваша_строка = "В MMXIII году в школе CXXIII состоялся очередной выпуск XI классов." результат = заменить_римские_числа(ваша_строка) print(результат) ```
Эта функция использует регулярное выражение `\b[IVXLCDM]+\b`, чтобы найти все подстроки в строке, которые соответствуют римским числам. Затем она использует вложенную функцию `заменить_римское_число`, чтобы выполнить конвертацию римских чисел в десятичные.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
