Advertisement
Guest User

Roman numbers

a guest
Jul 16th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.25 KB | None | 0 0
  1. # Problem
  2. # Да се напише функция, която приема число в интервала от 1 до 2018 и връща стринг с римския му запис.
  3. # Ако функцията се извика без да се зададе число, то да се изведе римския запис на числото 1.
  4.  
  5. # Examples
  6. # >>> roman(1)
  7. # 'I'
  8. # >>> roman(9)
  9. # 'IX'
  10. # >>> roman(425)
  11. # 'CDXXV'
  12. # >>> roman(2018)
  13. # 'MMXVIII'
  14. from collections import OrderedDict
  15.  
  16. def roman(number):
  17.     roman = OrderedDict()
  18.  
  19.     roman[1] = 'I'
  20.     roman[5] = 'V'
  21.     roman[10] = 'X'
  22.     roman[50] = 'L'
  23.     roman[100] = 'C'
  24.     roman[500] = 'D'
  25.     roman[1000] = 'M'
  26.  
  27.     step = 1
  28.     rom = ""
  29.     while number > 0:
  30.         remainder = number % 10
  31.  
  32.         if remainder <= 3:
  33.             rom = rom[:0] + roman[step] * int(remainder) + rom[0:]
  34.         elif remainder == 4:
  35.             rom = rom[:0] + roman[step] + roman[5 * step] + rom[0:]
  36.         elif remainder == 5:
  37.             rom = rom[:0] + roman[5 * step] + rom[0:]
  38.         elif remainder > 5 and remainder < 9:
  39.             rom = rom[:0] + roman[step * 5] + roman[step] * (int(remainder) - 5) + rom[0:]
  40.         elif remainder == 9:
  41.             rom = rom[:0] + roman[step] + roman[step * 10] + rom[0:]
  42.  
  43.  
  44.         step *= 10
  45.         number = (number - remainder) / 10
  46.  
  47.     return rom
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement