# 20+ Python Decimal to Roman Converters

This post contains a total of 20+ Hand-Picked Python Decimal to Roman converter examples with source code. All the Decimal to Roman converters are made using Python programming langauge.

You can use the source code of these programs for educational use with credits to the original owner.

### Related Posts

Click a Code to Copy it.

## 1. By Rull Deef 🐺

Made by Rull Deef 🐺. Simple Python program to convert decimal number to roman. Enter decimal positive number up to 3999. ( Source )

``````dec = list(map(int, input()))[::-1]
syms  = ('IV', 'XL', 'CD', 'M-')
nsyms = ('XL', 'CD', 'M-', '--')
rom = ''

for (d, s, n) in zip(dec, syms, nsyms):
if d in (1, 2, 3):
rom = s * d + rom
elif d == 4:
rom = s + rom
elif d in (5, 6, 7, 8):
rom = s + s * (d - 5) + rom
elif d == 9:
rom = s + n + rom

print(rom)``````

## 2. By Ann

Made by Ann. ( Source )

``````

def to_roman(value):
if not value.isdigit():
return "We can't convert non-int characters."

value = int(value)
if value <= 0:
return "We can't convert negative integer to roman ;("

roman = {"M": 1000, "CM": 900, "D": 500, "CD": 400, "C": 100, "XC": 90, "L": 50, "XL": 40, "X": 10, "IX": 9, "V": 5, "IV": 4,  "I": 1}

result = str()
for key in roman:
how_many = value // roman[key]
value -= roman[key] * how_many

if how_many > 0:
result += key * how_many

return result

print(to_roman(input()))

``````

## 3. By Reem Mansour

Made by Reem Mansour. Program to convert decimal numbers to roman numbers. ( Source )

``````rom_num = [(1000,'M'),(900,'CM'),(500,'D'),(400,'CD'),(100,'C'),(90,'XC'),(50,'L'),(40,'XL'),(10,'X'),(9,'IX'),(5,'V'),(4,'IV'),(1,'I')]

def num_to_roman(number):
roman=''
while number > 0:
for i,j in rom_num:
while number >= i:
roman += j
number -= i
return roman

number = int(input("Enter any number :"))
print(number)
#x = num_to_roman(number)
print("Roman number of", number , "is :",num_to_roman(number))``````

## 4. By Ram

Made by Ram. ( Source )

``````source = {
1:"I",
2:"II",
3:"III",
4:"IV",
5:"V",
6:"VI",
7:"VII",
8:"VIII",
9:"IX",
10:"X",
50:"L",
100:"C",
500:"D",
1000:"M"

}

value = int(input("What is your decimal number : "))
print(value , "\n")

try:
print(source[value])
except:
numeral = ""
while value > 0:
while value > 999:
numeral = numeral + source
value -= 1000
while value > 499:
numeral = numeral + source
value -= 500
while value > 99:
numeral = numeral + source
value -= 100
while value > 49:
numeral = numeral + source
value -= 50
while value > 9:
numeral = numeral + source
value -= 10
if value == 0:
print("Your new Roman numeral number is",numeral)
else:
numeral = numeral + source[value]
value = 0
print("Your new Roman numeral number is",numeral)``````

## 5. By Stefano De Angelis

Made by Stefano De Angelis. ( Source )

``````#Decimal to Roman CONVERTER
#Long code but very straight forward

try:
x = int(input())
rN = ""

while x >= 1000:
rN += "M"
x -= 1000
if x >= 900:
rN += "CM"
x -= 900
while x >= 500:
rN += "D"
x -= 500
if x >= 400:
rN += "CD"
x -= 400
while x >= 100:
rN += "C"
x -= 100
if x >= 90:
rN += "XC"
x -= 90
while x >= 50:
rN += "L"
x -= 50
if x >= 40:
rN += "XL"
x -= 40
while x >= 10:
rN += "X"
x -= 10
if x >= 9:
rN += "IX"
x -= 9
while x >= 5:
rN += "V"
x -= 5
if x >= 4:
rN += "IV"
x -= 4
while x >= 1:
rN += "I"
x -= 1

print(rN)

except:
print("Enter an integer number!")

finally:
print("\n\nProgram executed.")``````

## 6. By Prashant Pal

Made by Prashant Pal. ( Source )

``````b=int(input())
a=[]
n=b
while(n!=0):
if n>=1000:
m=n//1000
n%=1000
str="M"*m
a.append(str)
elif n<1000 and n>=900:
m=n//900
n%=900
str="CM"*m
a.append(str)
elif n<900 and n>=500:
m=n//500
n%=500
str="D"*m
a.append(str)
elif n<500 and n>=400:
m=n//400
n%=400
str="CD"*m
a.append(str)
elif n<400 and n>=100:
m=n//100
n%=100
str="C"*m
a.append(str)
elif n<100 and n>=90:
m=n//90
n%=90
str="XC"*m
a.append(str)
elif n<90 and n>=50:
m=n//50
n%=50
str="L"*m
a.append(str)
elif n<50 and n>=40:
m=n//40
n%=40
str="XL"*m
a.append(str)
elif n<40 and n>=10:
m=n//10
n%=10
str="X"*m
a.append(str)
elif n<10 and n>=9:
m=n//9
n%=9
str="IX"*m
a.append(str)
elif n<9 and n>=5:
m=n//5
n%=5
str="V"*m
a.append(str)
elif n<5 and n>=4:
m=n//4
n%=4
str="IV"*m
a.append(str)
elif n<4 and n>=1:
m=n//1
n%=1
str="I"*m
a.append(str)
print(b,":","".join(a))``````

## 7. By Andy Pandy

Made by Andy Pandy. ( Source )

``````#Roman Numerals are based on the following symbols:
#I = 1
#V = 5
#X = 10
#L = 50
#C = 100
#D = 500
#M = 1000

dec = input()
romM = ""
romC = ""
romX = ""
romI = ""

if len(dec) > 3:
decM = int(dec[:-3])
romM = "M" * decM

if len(dec) > 2:
decC = int(dec[-3:-2])
if decC == 0 or decC == 1 or decC == 2 or decC == 3:
romC = "C" * decC
elif decC == 4:
romC = "CD"
elif decC == 5 or decC == 6 or decC == 7 or decC == 8:
romC = "D" + ((decC-5) * "C")
elif decC == 9:
romC = "CM"

if len(dec) > 1:
decX = int(dec[-2:-1])
if decX == 0 or decX == 1 or decX == 2 or decX == 3:
romX = "X" * decX
elif decX == 4:
romX = "XL"
elif decX == 5 or decX == 6 or decX == 7 or decX == 8:
romX = "L" + ((decX-5) * "X")
elif decX == 9:
romX = "XC"

decI = int(dec[-1:])
if decI == 0 or decI == 1 or decI == 2 or decI == 3:
romI = "I" * decI
elif decI == 4:
romI = "IV"
elif decI == 5 or decI == 6 or decI == 7 or decI == 8:
romI = "V" + ((decI-5) * "I")
elif decI == 9:
romI = "IX"

rom = "{0}{1}{2}{3}".format(romM, romC, romX, romI)

print("The roman numeral for {0} is {1}.".format(dec, rom))
``````

## 8. By Lorenzo

Made by Lorenzo. ( Source )

``````#Base
u = ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']
d = ['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC']
c = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM']
m = ['', 'M', 'MM', 'MMM']

number = [input('Write the number that will be converted from decimal to romans:')]

#Code
if str(number).isnumeric() == False:
print('\nIt isn\'t an integer number')
else:
i = int(number)
s = str(i)
if i > 3999 or i < 1:
print('\nThe number needs to be higger than 1 and lower than 3999. However, your number is '+s+'. Try again.')
elif i >= 1 and i <= 9:
elif i >= 10 and i <= 99:
n1 = int(number)
n2 = int(number)
elif i >= 100 and i <= 999:
n1 = int(number)
n2 = int(number)
n3 = int(number)
elif i >= 1000 and i<= 3999:
n1 = int(number)
n2 = int(number)
n3 = int(number)
n4 = int(number)

## 9. By Tai Duc Pham

Made by Tai Duc Pham. This program will input your decimal number and convert it into Roman numeral. ( Source )

``````
from collections import OrderedDict

def write_roman (num) :
roman = OrderedDict()
roman = 'M'
roman = 'CM'
roman = 'D'
roman = 'CD'
roman = 'C'
roman = 'XC'
roman = 'L'
roman = 'XL'
roman = 'X'
roman = 'IX'
roman = 'V'
roman = 'IV'
roman = 'I'

def roman_num(num):
for r in roman.keys():
x, y = divmod(num, r)
yield roman[r] * x
num -= (r * x)
if num > 0:
roman_num(num)
else:
break

return ''.join([a for a in roman_num(num)])

x = int(input('put your number here (not larger than 10000) \n'))

result = write_roman(x)

print('your number is {} , convert to Roman numeral format will be {}'.format(x, result))``````

## 10. By Antu Acharjee

Made by Antu Acharjee. Roman numerals generator: 1 = I, 4 = IV, 20 = XX. ( Source )

``````
rom = {1:'I', 4:'IV', 5:'V', 9:'IX', 10:'X', 40:'XL', 50:'L', 90:'XC', 100:'C',400:'CD', 500:'D', 900:'CM', 1000:'M', 4000:'M|V ', 5000:'|V ', 9000:'|IX ', 10000:'|X '}

for i in range(2, 11):
if i < 4:
rom[i] = i*'I'
elif 5 < i < 9:
rom[i] = rom + (i-5)*'I'

def units(y):
if y < 4:
unit = y*'I'
elif 5 < y < 9:
unit = rom + (y-5)*'I'
else:
unit = rom[y]
return unit

def tens(x):
if 0 <= x < 10:
decs = units(x)
elif 10 <= x < 40:
decs = int(str(x))*rom + units(int(str(x)))
elif 40 <= x < 50:
decs = rom + units(int(str(x)))
elif 50 <= x < 90:
decs = rom + (int(str(x))-5)*rom + units(int(str(x)))
elif 90 <= x < 100:
decs = rom + units(int(str(x)))
return decs

def hundreds(x):
if 0 <= x < 100:
hund = tens(x)
elif 100 <= x < 400:
hund = int(str(x))*rom + tens(int(str(x) + str(x)))
elif 400 <= x < 500:
hund = rom + tens(int(str(x) + str(x)))
elif 500 <= x < 900:
hund = rom + (int(str(x))-5)*rom + tens(int(str(x) + str(x)))
elif 900 <= x < 1000:
hund = rom + tens(int(str(x) + str(x)))
return hund
def thousands(x):
if 0 <= x < 1000:
thou = hundreds(x)
elif 1000 <= x < 4000:
thou = int(str(x))*rom + hundreds(int(str(x) + str(x) + str(x)))
elif 4000 <= x < 5000:
thou = rom + hundreds(int(str(x) + str(x) + str(x)))
elif 5000 <= x < 9000:
thou = rom + (int(str(x))-5)*rom + hundreds(int(str(x) + str(x) + str(x)))
elif 9000 <= x < 10000:
thou = rom + hundreds(int(str(x) + str(x) + str(x)))
return thou

x = int(input('your decimal format number(max limit is 10000): \n'))

if len(str(x)) == 1:
roman = units(x)
elif len(str(x)) == 2:
roman = tens(x)
elif len(str(x)) == 3:
roman = hundreds(x)
elif len(str(x)) == 4:
roman = thousands(x)
elif x == 10000:
roman = rom

print('{} ==> {}(Roman numerals format)'. format(x, roman))``````

## 11. By jiangyewen

Made by jiangyewen. ( Source )

``````romanchar="IVXLCDM"
a=input()
print(a)
d=len(a)
z=[]
def dectoroman(x,y,z):
if (x%5==4):
z.insert(0,romanchar[y]+romanchar[(x//5+y+1)])
else:
z.insert(0,(x//5)*romanchar[y+(x//5)]+(x%5)*romanchar[y])
return z
while (d>0):
dectoroman(int(a[d-1]),(len(a)-d)*2,z)
d-=1
for i in z:
print(i,end="")``````

## 12. By Pixie

Made by Pixie. The program is simple. Enter a Decimal number, you get it’s Roman Numeral equivalent, or enter a Roman Number and get it’s Decimal equivalent. ( Source )

``````
#Roman Numerals Helper

"""

Changelog:-

12/7/17=>Published code

16/7/17=>Invalid Roman Numerals like IM, VIIIII etc. are handled instead of giving a numerical answer.
"""

def encoder(num):
roman,s,decimal= ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"],"",[1000,900,500,400,100,90,50,40,10,9,5,4,1]
for i in range(13):
while num >= decimal[i]:
num = num-decimal[i]
s = s+roman[i];
return s

def decoder(r):
k=r
if r=="":return "Don't leave the input blank"
roman,s= {"M":1000,"CM":900, "D":500, "CD":400, "C":100, "XC":90, "L":50, "XL":40, "X":10, "IX":9, "V":5, "IV":4, "I":1},0
while r!="":
if r[:2] in roman:a,r=r[:2],r[2:]
elif r in roman:a,r=r,r[1:]
else: return "Enter proper Decimal/Roman number as input"
s+=roman[a]
return s if encoder(int(s))==k else "Not a valid Roman Numeral"

a=input()
try:print(encoder(int(a)))
except:print(decoder(a.upper())) ``````

## 13. By Olusegun Abayomi

Made by Olusegun Abayomi. ( Source )

``````"""
The program converts decimals to Roman Numeral"""

def numeralCheck(digit):
if len(digit) == 1:
i = (" ".join(digit))
s = int(i)
if s == 0:
return("")
elif s > 0 and s <= 3:
return("I" * s)
elif s == 4:
return("IV")
elif s == 5:
return("V")
elif s > 5 and s <= 8:
k = (s - 5)
return("V" + ("I"*k))
else:
return("IX")
elif len(digit) == 2:

E = ""
for i in digit:
if len(i) == 2:
j = int(i)
if j == 0:
E += ""
elif j == 10:
E += "X"
elif j == 20:
E += "XX"
elif j == 30:
E += "XXX"
elif j == 40:
E += "XL"
elif j == 50:
E += "L"
elif j == 60:
E += "LX"
elif j == 70:
E += "LXX"
elif j == 80:
E += "LXXX"
else:
E += "XC"
else:
s = int(i)
if s == 0:
E += ""
elif s > 0 and s <= 3:
E +=("I" * s)
elif s == 4:
E +=("IV")
elif s == 5:
E +=("V")
elif s > 5 and s <= 8:
k = (s - 5)
E +=("V" + ("I"*k))
else:
E +=("IX")
return(E)

elif len(digit) == 3:
E = ""
print(3)
for i in digit:
if len(i) == 3:
j = int(i)
if j == 0:
E += ""
elif j == 100:
E += "C"
elif j == 200:
E += "CC"
elif j == 300:
E += "CCC"
elif j == 400:
E += "CD"
elif j == 500:
E += "D"
elif j == 600:
E += "DC"
elif j == 700:
E += "DCC"
elif j == 800:
E += "DCCC"
else:
E += "CM"
elif len(i) == 2:
j = int(i)
if j == 0:
E += ""
elif j == 10:
E += "X"
elif j == 20:
E += "XX"
elif j == 30:
E += "XXX"
elif j == 40:
E += "XL"
elif j == 50:
E += "L"
elif j == 60:
E += "LX"
elif j == 70:
E += "LXX"
elif j == 80:
E += "LXXX"
else:
E += "XC"
else:
s = int(i)
if s == 0:
E += ""
elif s > 0 and s <= 3:
E +=("I" * s)
elif s == 4:
E +=("IV")
elif s == 5:
E +=("V")
elif s > 5 and s <= 8:
k = (s - 5)
E +=("V" + ("I"*k))
else:
E +=("IX")
return(E)
elif len(digit) == 4:

E = ""
for i in digit:
if len(i) == 4:
j = int(i)
if j == 0:
E += ""
elif j == 1000:
E += "M"
elif j == 2000:
E += "MM"
elif j == 3000:
E += "MMM"
elif j == 4000:
E += "Mv"

else:
return("The figure is above the programmed level")
elif len(i) == 3:
j = int(i)
if j == 0:
E += ""
elif j == 100:
E += "C"
elif j == 200:
E += "CC"
elif j == 300:
E += "CCC"
elif j == 400:
E += "CD"
elif j == 500:
E += "D"
elif j == 600:
E += "DC"
elif j == 700:
E += "DCC"
elif j == 800:
E += "DCCC"
else:
E += "CM"
elif len(i) == 2:
j = int(i)
if j == 0:
E += ""
elif j == 10:
E += "X"
elif j == 20:
E += "XX"
elif j == 30:
E += "XXX"
elif j == 40:
E += "XL"
elif j == 50:
E += "L"
elif j == 60:
E += "LX"
elif j == 70:
E += "LXX"
elif j == 80:
E += "LXXX"
else:
E += "XC"

else:
s = int(i)
if s == 0:
E += ""
elif s > 0 and s <= 3:
E +=("I" * s)
elif s == 4:
E +=("IV")
elif s == 5:
E +=("V")
elif s > 5 and s <= 8:
k = (s - 5)
E +=("V" + ("I"*k))
else:
E +=("IX")
return(E)

def solution(n):
# TODO convert int to roman string
book = []
counter = 1
pen = str(n)
for i in pen:
book.append(i+((len(pen)-counter)*("0")))
counter += 1
return(numeralCheck(book))

print(solution(2148))``````

## 14. By David Avetian

Made by David Avetian. ( Source )

``````Rom_to_Dec = {
1: 'I', 2: 'II', 3: 'III', 5: 'V', 4: 'IV',
6: 'VI', 7: 'VII', 8: 'VIII', 10: 'X',
9: 'IX', 20: 'XX', 30: 'XXX', 50: 'L', 40: 'XL',
60: 'LX', 70: 'LXX', 80: 'LXXX', 100: 'C',
90: 'XC', 200: 'CC', 300: 'CCC', 500: 'D', 400: 'CD',
600: 'DC', 700: 'DCC', 800: 'DCCC', 900: 'CM'}
# it is sorted like this because
# we seek for Romans 4, 9, 40, 90, etc
# before  5, 10, 50, 100, and so on
# for higher numbers dict should be adjusted in the same pattern

num = input()

try:
"""
This part converts Decimals to Romans
"""
N = int(num)
Roman = []  # here Roman numerals are kept
i = 0  # an order of current iteration (as in 10 ** 0 and so on)
while N > 0:
"""
The main idea is that we convert decimals into romans
from right to left and so does this program
"""
Decimal = N % 10  # here one gets the last number
Decimal *= 10 ** i
# gets an actual number from dict
# considering all previous numbers from the right are already away
N //= 10  # takes away the last number on the right
i += 1    # upgrades an order of iteration
if Decimal >= 1000:
"""
As there are no special Roman Numerals after 1000
it's better to count M's separately
If you want to use other symbols for 5000, 10000 and more
You can adjust the initial dict
"""
k = Decimal // 1000
Roman.append('M' * k)
elif Decimal == 0:
continue
else:
Roman.append(Rom_to_Dec[Decimal])
print(num, 'in Romans is', ''.join(Roman[::-1]))

except ValueError:
"""
This part reverses the original dict
"""
_values = []  # keeps values from original dictionary
_keys = []    # keeps its keys

for i in Rom_to_Dec:
"""
Takes values and keys from original dict
"""
_values.append(Rom_to_Dec[i])
_keys.append(i)
"""
And reverses them joining in new dict
"""
_values.reverse()
_keys.reverse()
# reversed dict:
Dec_to_Rom = {_values[i]: _keys[i] for i in range(len(_values))}
# the main idea here to convert numbers formleft to right

"""
This part converts Romans to Decimals
"""
res = 0  # to be the final result
num = num.upper()  # just in case if some letters are not in caps
mem = num  # memorizing input
for i in range(len(num)):
"""
As there are no special Roman Numerals after 1000
it's better to count M's separately
"""
if num[i] == 'M':
res += 1000
else:
# if not this CM would be 1900 and so on
break
for v in Dec_to_Rom:
if v in num:
res += Dec_to_Rom[v]
num = num.lstrip(v)  # this is done to avoid multiple counting

if res == 0 or len(num) > 0:
print(mem, 'either isn\'t a Roman number or doesn\'t follow the rules')
else:
print(mem, 'in decimals is', res)``````

## 15. By John Galas

Made by John Galas. This program only works with numbers up to 200. ( Source )

``````
num = float(input("Num: "))

def get_rn(num):
rn = ''
if num % 100 >= 0 and num >= 100:
C = 'C' * int(num/100)
rn += C
if 9 >= (num+10) % 100 >= 0:
rn += 'XC'
if num % 50 >= 0 and num >= 50 and num < 90:
L = 'L' * int(num/50)
rn += L
elif num % 50 >= 0 and num >= 150 and num < 190:
L = 'L' * int((num-100)/50)
rn += L
if 9 >= ((num+10) % 50) >= 0 and num < 90:
rn += 'XL'
elif 9 >= ((num+10) % 50) >= 0 and 190 > num > 100:
rn += 'XL'
if num % 10 >= 0 and num >= 10 and num < 40:
X = 'X' * int(num/10)
rn += X
elif num % 10 >= 0 and num > 50 and num < 90:
X = 'X' * int((num-50)/10)
rn += X
elif num % 10 >= 0 and num > 100 and num < 140:
X = 'X' * (int((num-100)/10))
rn += X
elif num % 10 >= 0 and num > 150 and num < 190:
X = 'X' * (int((num-150)/10))
rn += X
if (num+1) % 10 == 0:
rn += 'IX'
if num % 5 >= 0 and num % 10 >= 5 and (num+1) % 10 != 0 and (num+1) % 5 != 0:
rn += 'V'
if (num+1) % 5 == 0 and (num+1) % 10 != 0:
rn += 'IV'
if num % 5 != 0 and num % 10 != 0 and (num+1) % 10 != 0 and (num+1) % 5 != 0 :
I = 'I' * (num%5)
rn += I

return rn

num_string = str(num)
num_string_split = num_string.split(".")
print(num_string_split)
num1 = int(num_string_split)
num2 = int(num_string_split)
rn_deci = get_rn(num1) + '.' + get_rn(num2)
print(rn_deci)

``````

## 16. By Álex Velasco

Made by Álex Velasco. ( Source )

``````

def selectRoman(num,dec):
if(dec==1):
one="I"
five="V"
ten="X"
elif(dec==10):
one="X"
five="L"
ten="C"
elif(dec==100):
one="C"
five="D"
ten="M"
else:
m=""
for loop in range(int(int(num)*(dec/1000))):
m=m+"M"

return m

if(num=="1"):
return one
elif(num=="2"):
return one+one
elif(num=="3"):
return one+one+one
elif(num=="4"):
return one+five
elif(num=="5"):
return five
elif(num=="6"):
return five+one
elif(num=="7"):
return five+one+one
elif(num=="8"):
return five+one+one+one
elif(num=="9"):
return one+ten
return ""
def decimaltoRoman (numbers):
print (numbers)
i=10**(len(numbers)-1)
str=""
for number in numbers:
str+=selectRoman(number,i)
i=i/10
return str
def main():
x=decimaltoRoman(input("Converting the number: "))
print(x)
main()
``````

## 17. By Maria

Made by Maria. ( Source )

``````#Decimal number to roman

def decimal2roman(n):
dict = ((1000, 'M'), (900, 'CM'), (500, 'D'), (400, 'CD'), (100, 'C'), (90, 'XC'),
(50, 'L'), (40, 'XL'), (10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I'))
roman = ''
while n > 0:
for i, r in dict:
while n >= i:
roman += r
n -= i
return roman

print(decimal2roman(int(input())))``````

## 18. By Lucas Pardo

Made by Lucas Pardo. ( Source )

``````#Inspired by LukArToDo's code: https://code.sololearn.com/c95Y62c4p1dV/?ref=app
#Inspired but not copied, this is my own way.

n = int(input())
roman = {1000:"M", 500:"D", 100:"C", 50:"L", 10:"X", 5:"V", 1:"I"}
nums = [1000, 500, 100, 50, 10, 5, 1]

if n >= 4000:
print("Please input in the range (1-3999).")
else:
res = ""
for i in range(len(nums)):
digit = n // nums[i]
if digit == 4:
if res[-1] == "L":
aux = "XC"
elif res[-1] == "V":
aux = "IX"
elif res[-1] == "D":
aux = "CM"
else:
aux = roman[nums[i]] + roman[nums[i-1]]
res = res[:-1] + aux
else:
res += roman[nums[i]]*digit
n %= nums[i]
print("The roman number is", res)
``````

## 19. By Selim Sayma

Made by Selim Sayma. Simple decimal to roman converter. ( Source )

``````def solution(number):
result = []
while number >= 1000:
result.append('M')
number -= 1000
result = result
number = number
while number < 1000 and number >= 100:
if number >= 900:
result.append('CM')
number -= 900
if number >= 500:
result.append('D')
number -= 500
if number >= 400:
result.append('CD')
number -= 400
if number >= 100:
result.append('C')
number -= 100
result = result
number = number
while number < 100 and number >= 10:
if number >= 90:
result.append('XC')
number -= 90
if number >= 50:
result.append('L')
number -= 50
if number >= 40:
result.append('XL')
number -= 40
if number >= 10:
result.append('X')
number -= 10
result = result
number = number
if number == 9:
result.append('IX')
if number == 8:
result.append('VIII')
if number == 7:
resut.append('VII')
if number == 6:
result.append('VI')
if number == 5:
result.append('V')
if number == 4:
result.append('IV')
if number == 3:
result.append('III')
if number == 2:
result.append('II')
if number == 1:
result.append('I')
return (''.join(result))

number = int(input())

print(solution(number))``````

## 20. By Ava Thrasher

Made by Ava Thrasher. ( Source )

``````x = int(input ("Your number was:"))

if x == 1:
print ("I")

elif x == 2:
print ("II")

elif x == 3:
print ("III")

elif x == 4:
print ("VI")

elif x == 5:
print ("v")

elif x == 6:
print ("VI")

elif x == 7:
print ("VII")

elif x == 8:
print ("VIII")

elif x == 9:
print ("IX")

elif x == 10:
print ("X")

else:
print ("Number is greater than 10")``````

## 21. By Mike Buttery

Made by Mike Buttery. Decimal to Roman Converter, Enter an integer between 1 and 3999. ( Source )

``````
def dectoroman(n):
if 1 < n < 4000:
number = n
roman = [
(1000, "M"),
(900, "CM"),
(500, "D"),
(400, "CD"),
(100, "C"),
(90, "XC"),
(50, "L"),
(40, "XL"),
(10, "X"),
(9, "IX"),
(5, "V"),
(4, "IV"),
(1, "I"),
]

result = ""
for i in roman:
count = number // i
number -= i * count
result += i * count
return n, result
else:
return "Requires an integer between 1 and 3999", ""

d, r = dectoroman(int(input()))
print("Decimal: {}\nRoman: {}".format(d, r))
``````