Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Problem
- # Да се напише функция, която приема число в интервала от 1 до 2018 и връща стринг с римския му запис.
- # Ако функцията се извика без да се зададе число, то да се изведе римския запис на числото 1.
- # Examples
- # >>> roman(1)
- # 'I'
- # >>> roman(9)
- # 'IX'
- # >>> roman(425)
- # 'CDXXV'
- # >>> roman(2018)
- # 'MMXVIII'
- from collections import OrderedDict
- def roman(number):
- roman = OrderedDict()
- roman[1] = 'I'
- roman[5] = 'V'
- roman[10] = 'X'
- roman[50] = 'L'
- roman[100] = 'C'
- roman[500] = 'D'
- roman[1000] = 'M'
- step = 1
- rom = ""
- while number > 0:
- remainder = number % 10
- if remainder <= 3:
- rom = rom[:0] + roman[step] * int(remainder) + rom[0:]
- elif remainder == 4:
- rom = rom[:0] + roman[step] + roman[5 * step] + rom[0:]
- elif remainder == 5:
- rom = rom[:0] + roman[5 * step] + rom[0:]
- elif remainder > 5 and remainder < 9:
- rom = rom[:0] + roman[step * 5] + roman[step] * (int(remainder) - 5) + rom[0:]
- elif remainder == 9:
- rom = rom[:0] + roman[step] + roman[step * 10] + rom[0:]
- step *= 10
- number = (number - remainder) / 10
- return rom
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement