Python Program: Roman Numeral Addition (2025)

Python code that demonstrates how to add two Roman numerals and return the Roman numeral representation of the sum.

Code Generator | 1 week ago

Roman numerals are a numeric system that originated in ancient Rome. While they are no longer commonly used in everyday life, they still hold historical and cultural significance. In this article, we will explore how to write a Python program that adds two Roman numerals and returns the Roman numeral representation of the sum.

Understanding Roman Numerals

Before we dive into the code, let's briefly review the rules for Roman numerals:

  • The Roman numeral system uses seven symbols: I, V, X, L, C, D, and M, which represent the values 1, 5, 10, 50, 100, 500, and 1000, respectively.
  • The symbols can be combined to represent other values. For example, II represents 2, III represents 3, and IV represents 4.
  • When a smaller symbol appears before a larger symbol, it is subtracted from the larger symbol. For example, IV represents 4 (5 - 1) and IX represents 9 (10 - 1).

Converting Roman Numerals to Integers

The first step in our program is to convert the Roman numerals to integers. We can achieve this by defining a function called roman_to_int that takes a Roman numeral as input and returns the corresponding integer value.

def roman_to_int(roman): roman_dict = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000} result = 0 for i in range(len(roman)): if i > 0 and roman_dict[roman[i]] > roman_dict[roman[i - 1]]: result += roman_dict[roman[i]] - 2 * roman_dict[roman[i - 1]] else: result += roman_dict[roman[i]] return result

The roman_to_int function uses a dictionary to map each Roman numeral symbol to its corresponding integer value. It then iterates over the input Roman numeral and calculates the integer value by adding or subtracting the appropriate values based on the rules of Roman numerals.

Converting Integers to Roman Numerals

Once we have converted the Roman numerals to integers, we need to add them together and convert the sum back to a Roman numeral. To achieve this, we define another function called int_to_roman that takes an integer as input and returns the corresponding Roman numeral.

def int_to_roman(num): val = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1] syms = ['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 += syms[i] num -= val[i] i += 1 return roman_num

The int_to_roman function uses two lists: val and syms. The val list contains the integer values in descending order, while the syms list contains the corresponding Roman numeral symbols. The function then iterates over the val list and appends the corresponding symbols to the roman_num string based on the quotient of the division between the input integer and the current value in the val list.

Adding Roman Numerals

With the conversion functions in place, we can now define the romanAdder function that adds two Roman numerals and returns the Roman numeral representation of the sum.

def romanAdder(num1, num2): int_sum = roman_to_int(num1) + roman_to_int(num2) if int_sum >= 4000: raise ValueError('Sum exceeds 4000 which is not supported for this program.') roman_sum = int_to_roman(int_sum) return roman_sum

The romanAdder function takes two Roman numerals as input, converts them to integers using the roman_to_int function, adds the integers together, and then converts the sum back to a Roman numeral using the int_to_roman function. If the sum exceeds 4000, the function raises a ValueError since it is not supported by the program.

Main Function

Finally, we define the main function, which serves as the entry point of our program. It prompts the user to enter two Roman numerals, calls the romanAdder function to calculate the sum, and then displays the result.

def main(): num1 = input('Enter the first Roman numeral: ') num2 = input('Enter the second Roman numeral: ') result = romanAdder(num1, num2) print(f'The sum of {num1} and {num2} is: {result}')if __name__ == '__main__': main()

Example Usage

Let's say we want to add the Roman numerals MMCMI and CIII. We can run the program and enter the following inputs:

Enter the first Roman numeral: MMCMIEnter the second Roman numeral: CIII

The program will then calculate the sum and display the result:

The sum of MMCMI and CIII is: MMMIV

Conclusion

In this article, we have learned how to write a Python program that adds two Roman numerals and returns the Roman numeral representation of the sum. We explored the conversion of Roman numerals to integers and vice versa, as well as the addition of Roman numerals. This program can be useful in various scenarios where Roman numeral arithmetic is required, such as historical research or educational purposes. Feel free to modify and expand upon the program to suit your specific needs!

This article was generated with AI. AI can make mistakes, consider checking important information.

Explore these related queries
  • Python Program to Generate a Quiz for Basic Arithmetic Skills 1 week ago
  • Facial Emotion Recognition Python Program 2 weeks ago
  • Python Program: Signup and Login 3 weeks ago
  • Python Program to Compute Sum of Even Numbers 3 weeks ago
  • Python Key Shortcut Monitor Program 1 month ago
  • Python Program: Test Score Average and Letter Grades 1 month ago
  • Python Program: Display Prime Numbers Between 1 and 100 2 months ago
  • Python Program: Addition and Subtraction 2 months ago
  • Python Program: Favorite Number Calculations 2 months ago
  • Python Program: Check Divisibility by 3 2 months ago
Python Program: Roman Numeral Addition (2025)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Rev. Porsche Oberbrunner

Last Updated:

Views: 5974

Rating: 4.2 / 5 (53 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Rev. Porsche Oberbrunner

Birthday: 1994-06-25

Address: Suite 153 582 Lubowitz Walks, Port Alfredoborough, IN 72879-2838

Phone: +128413562823324

Job: IT Strategist

Hobby: Video gaming, Basketball, Web surfing, Book restoration, Jogging, Shooting, Fishing

Introduction: My name is Rev. Porsche Oberbrunner, I am a zany, graceful, talented, witty, determined, shiny, enchanting person who loves writing and wants to share my knowledge and understanding with you.