Skip to content

Instantly share code, notes, and snippets.

@GrantSchiller
Created September 12, 2013 18:22
Show Gist options
  • Save GrantSchiller/6541774 to your computer and use it in GitHub Desktop.
Save GrantSchiller/6541774 to your computer and use it in GitHub Desktop.
# Python 3 script to convert Arabic numerals to Roman numerals.
# which = input("To arabic or roman numerals? ")
which = "arabic" # currently only works for conversion to roman numerals
if which == "arabic": # placeholder
arabic = input("Input your arabic numeral: ") # prompt user
arabicArray = list(arabic) # [1,2,3,4] represents 1000 + 200 + 30 + 4... How do I make this list a list of ints?
romanArray = [] # fill later
for dig in range((len(arabicArray)-1),-1,-1): # iterate backwards
if dig == len(arabicArray)-1: # ones place
# 1 through 10
if int(arabicArray[dig]) == 5:
romanArray.append("V")
elif int(arabicArray[dig]) > 5:
if (int(arabicArray[dig])%5) <= 3:
romanArray.append("V" + "I"*(int(arabicArray[dig])%5))
else:
romanArray.append("IX")
else:
if int(arabicArray[dig]) == 4:
romanArray.append("IV")
else:
romanArray.append("I"*int(arabicArray[dig]))
elif dig == len(arabicArray)-2: # tens place
# 10 through 100
if int(arabicArray[dig]) == 5:
romanArray.append("L")
elif int(arabicArray[dig]) > 5:
if (int(arabicArray[dig])%5) <= 3:
romanArray.append("L" + "X"*(int(arabicArray[dig])%5))
else:
romanArray.append("XC")
else:
if int(arabicArray[dig]) == 4:
romanArray.append("XL")
else:
romanArray.append("X"*int(arabicArray[dig]))
elif dig == len(arabicArray)-3: # hundreds place
# 100 through 1000
if int(arabicArray[dig]) == 5:
romanArray.append("D")
elif int(arabicArray[dig]) > 5:
if (int(arabicArray[dig])%5) <= 3:
romanArray.append("D" + "C"*(int(arabicArray[dig])%5))
else:
romanArray.append("CM")
else:
if int(arabicArray[dig]) == 4:
romanArray.append("CD")
else:
romanArray.append("C"*int(arabicArray[dig]))
else:
romanArray.append("M") # beyond the thousands place
newlist = romanArray[::-1] # reverse array
print("".join(newlist)) # joins the array into a string and prints
# I think there may be an easier way to do this using arrays like [[1,"I"],[4,"IV"],...]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment