Advertisement
vasyukov

ZFTSH Numeral Systems 4

Dec 30th, 2022 (edited)
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.71 KB | None | 0 0
  1. def arabic_to_roman(res):
  2.     ans = ''
  3.     match res//1000:
  4.         case 3: ans += 'MMM'
  5.         case 2: ans += 'MM'
  6.         case 1: ans += 'M'
  7.    
  8.     match res//100%10:
  9.         case 9: ans += 'CM'
  10.         case 8: ans += 'DCCC'
  11.         case 7: ans += 'DCC'
  12.         case 6: ans += 'DC'
  13.         case 5: ans += 'D'
  14.         case 4: ans += 'CD'
  15.         case 3: ans += 'CCC'
  16.         case 2: ans += 'CC'
  17.         case 1: ans += 'C'
  18.    
  19.     match res//10%10:
  20.         case 9: ans += 'XC'
  21.         case 8: ans += 'LXXX'
  22.         case 7: ans += 'LXX'
  23.         case 6: ans += 'LX'
  24.         case 5: ans += 'X'
  25.         case 4: ans += 'XL'
  26.         case 3: ans += 'XXX'
  27.         case 2: ans += 'XX'
  28.         case 1: ans += 'X'
  29.  
  30.     match res%10:
  31.         case 9: ans += 'IX'
  32.         case 8: ans += 'VIII'
  33.         case 7: ans += 'VII'
  34.         case 6: ans += 'VI'
  35.         case 5: ans += 'V'
  36.         case 4: ans += 'IV'
  37.         case 3: ans += 'III'
  38.         case 2: ans += 'II'
  39.         case 1: ans += 'I'
  40.     return ans
  41.  
  42. s = input()
  43. res = 0
  44. char_0 = ord('0')
  45. char_9 = ord('9')
  46. is_number = True
  47. end_with_dot = False
  48.  
  49. for i in range(len(s)):
  50.     if s[i] == '.':
  51.         end_with_dot = True
  52.         break
  53.     elif char_0 <= ord(s[i]) <= char_9:
  54.         res = res*10 + int(s[i])
  55.     else:
  56.         is_number = False
  57.         break
  58.  
  59. if s[-1] == '.': end_with_dot = True
  60. if not end_with_dot:
  61.     print('Нет точки в конце последовательности!')
  62. elif not is_number:
  63.     print('Это не число!')
  64. else:
  65.     if 0 < res < 4000:
  66.         ans = arabic_to_roman(res)
  67.         print(ans)    
  68.     else:
  69.         print('Число должно быть больше 0 и меньше 4000!')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement