w3resource

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:

Python: Convert an integer it to a roman numeral.

Flowchart:

Flowchart: Convert an integer it to a roman numeral

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:

Flowchart: Convert an integer it to a roman numeral

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.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

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