Since I am trying to learn python, I decided to give this little task a quick shot.
The first thing to do here is to go and read about Roman numerals. Once you do, you will find that the only trick is that if a lower Roman numeral precedes a larger one, it actually acts as a subtract.
#!/usr/bin/env python
import sys
ROMAN_NUMERAL_DICTIONARY = {
'I' : 1,
'V' : 5,
'X' : 10,
'L' : 50,
'C' : 100,
'D' : 500,
'M' : 1000
}
def IsRomanNumeral(romanNumeralPart):
return romanNumeralPart in ROMAN_NUMERAL_DICTIONARY
def GetDigitValueOf(romanNumeralPart):
return ROMAN_NUMERAL_DICTIONARY[romanNumeralPart]
args = sys.argv
if (len(args) < 2):
print "Please pass an argument to convert."
sys.exit(0)
romanNumeral = args[1]
decimalNumber = 0
counter = 0
while counter <= (len(romanNumeral) -1):
currentNumeral = romanNumeral[counter]
if not IsRomanNumeral(currentNumeral):
print "Invalid roman numeral... exiting.. "
sys.exit(0)
currentDigit = GetDigitValueOf(currentNumeral)
if (counter + 1 >= len(romanNumeral)):
decimalNumber = decimalNumber + currentDigit
break
nextDigit = GetDigitValueOf(romanNumeral[counter + 1])
if (currentDigit < nextDigit):
decimalNumber = decimalNumber + nextDigit - currentDigit
counter = counter + 2
else:
decimalNumber = decimalNumber + currentDigit
counter = counter + 1
print romanNumeral + "=" + str(decimalNumber)
Probably not the best python.. but I'm still learning!
No comments:
Post a Comment