Python: Convert an integer to a roman numeral
Python Class: Exercise-1 with Solution
Write a Python class to convert an integer to a Roman numeral.
Sample Solution-1:
Python Code:
class py_solution:
def int_to_Roman(self, num):
val = [
1000, 900, 500, 400,
100, 90, 50, 40,
10, 9, 5, 4,
1
]
syb = [
"M", "CM", "D", "CD",
"C", "XC", "L", "XL",
"X", "IX", "V", "IV",
"I"
]
roman_num = ''
i = 0
while num > 0:
for _ in range(num // val[i]):
roman_num += syb[i]
num -= val[i]
i += 1
return roman_num
print(py_solution().int_to_Roman(1))
print(py_solution().int_to_Roman(4000))
Sample Output:
I MMMM
Pictorial Presentation:
Flowchart:
Sample Solution-2:
Convert an integer to its roman numeral representation. Accepts value between 1 and 3999 (both inclusive).
- Create a lookup list containing tuples in the form of (roman value, integer).
- Use a for loop to iterate over the values in lookup.
- Use divmod() to update num with the remainder, adding the roman numeral representation to the result.
Python Code:
class py_solution:
def int_to_Roman(self, num):
lookup = [
(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'),
]
res = ''
for (n, roman) in lookup:
(d, num) = divmod(num, n)
res += roman * d
return res
print(py_solution().int_to_Roman(1))
print(py_solution().int_to_Roman(500))
print(py_solution().int_to_Roman(755))
print(py_solution().int_to_Roman(1200))
print(py_solution().int_to_Roman(3456))
Sample Output:
I D DCCLV MCC MMMCDLVI
Flowchart:
Python Code Editor:
Contribute your code and comments through Disqus.
Previous: Python Class exercises.
Next: Write a Python class to convert a roman numeral to an integer.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/python-exercises/class-exercises/python-class-exercise-1.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics