Created
September 12, 2013 18:22
-
-
Save GrantSchiller/6541774 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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