Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 23, 2021 20:26:10

PSAS
Зарегистрирован: 2021-11-13
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Решение задачи по римским цифрам

Здравствуйте!
Прошу уточнить в чем может быть ошибка

 romans=dict(I=1,V=5,X=10,L=50,C=100,D=500,M=1000)
def parse_roman(roman):
    #переменная аккумулятор
    result=0
    for i,с in enumerate(roman):
    # не заходим за границу римской нотации и проверяем два случая
        if i+1<len(roman) and romans[с] < romans[romans[i+1]]:
        # если текущее значение меньше следующего, то отнимает от результата это значение
            result-=romans[с]
        else:
            result+=romans[с]
    return result
print(parse_roman('I')==1)
print(parse_roman('II')==2)
print(parse_roman('IV')==4)
print(parse_roman('VI')==6)
print(parse_roman('V')==5)
print(parse_roman('X')==10)
print(parse_roman('XIV')==14)
print(parse_roman('L')==50)
print(parse_roman('C')==100)
print(parse_roman('M')==1000)
Traceback (most recent call last):
File “C:\Users\Карапет\AppData\Local\Programs\Python\Python310\Тест\Roman.py”, line 15, in <module>
print(parse_roman('II')==2)
File “C:\Users\Карапет\AppData\Local\Programs\Python\Python310\Тест\Roman.py”, line 8, in parse_roman
if i+1<len(roman) and romans < romans[romans]:
KeyError: 1

Офлайн

#2 Дек. 8, 2021 22:17:24

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

Решение задачи по римским цифрам

Исправил ошибку в имени

   
romans=dict(I=1,V=5,X=10,L=50,C=100,D=500,M=1000)
 
def parse_roman(roman):
    #переменная аккумулятор
    result=0
    for i,c in enumerate(roman):
    # не заходим за границу римcкой нотации и проверяем два cлучая
        if i+1<len(roman) and romans[c] < romans[roman[i+1]]:
        # еcли текущее значение меньше cледующего, то отнимает от результата это значение
            result-=romans[c]
        else:
            result+=romans[c]
    return result
 
print(parse_roman('I')==1)
print(parse_roman('II')==2)
print(parse_roman('IV')==4)
print(parse_roman('VI')==6)
print(parse_roman('V')==5)
print(parse_roman('X')==10)
print(parse_roman('XIV')==14)
print(parse_roman('L')==50)
print(parse_roman('C')==100)
print(parse_roman('M')==1000)

[guest@localhost py]$ python3 romans.py 
True
True
True
True
True
True
True
True
True
True
[guest@localhost py]$



Отредактировано py.user.next (Дек. 8, 2021 22:17:43)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version