"""File: to_roman5.9.py Purpose: Convert a Roman numeral into a Hindu-Arabic numeral. Print a message if the character entered by the user isn't a legal Roman numeral, and quit. This version accepts both lower case and upper case letters. Run: python to_roman5.9.py Input: A Roman numeral Output: Corresponding Hindu-Arabic numeral or error message """ from sys import exit #---------------------------------------------------------------------- def convert_to_number(roman_sym): """Convert a single character Roman numeral into a number """ if roman_sym == 'M' or roman_sym == 'm': return 1000 elif roman_sym == 'D' or roman_sym == 'd': return 500 elif roman_sym == 'C' or roman_sym == 'c': return 100 elif roman_sym == 'L' or roman_sym == 'l': return 50 elif roman_sym == 'X' or roman_sym == 'x': return 10 elif roman_sym == 'V' or roman_sym == 'x': return 5 elif roman_sym == 'I' or roman_sym == 'i': return 1 else: return None #---------------------------------------------------------------------- # Program starts here roman = raw_input("Enter a Roman numeral\n") print "You entered", roman number = 0 val = convert_to_number(roman[0]) for i in range(1,len(roman)): new_val = convert_to_number(roman[i]) if val < new_val: number = number-val else: number = number+val val = new_val number = number+val print "The Roman numeral", roman, "corresponds to the" print " Hindu-Arabic numeral", number