關於羅馬數字轉換為阿拉伯數字的Python程序編程
阿拉伯數字計數法作為傳統的位置計數方法,想被羅馬數字轉換是一件較為困難的事情,羅馬數字的規律我進行了總結,如下:
- 相同的數字連寫,所表示的數等於這些數字相加得到的數(最多只能連寫三次)
- 小的數字在大的數字的右邊,所表示的數等於這些數字相加得到的數
- 小的數字,(限於Ⅰ、X和C)在大的數字的左邊,所表示的數等於大數減小數得到的數
因此,借助len函數,常規的判斷語句以及循環語句,基礎的print,input等函數,我成功編輯出這一個程序。
代碼如下:(可以借鑒,嚴禁抄襲)
#阿拉伯數字轉換羅馬數字1~3999
#I=1 V=5 X=10 L=50 C=100 D=500 M=1000 IV=4 IX=9 XL=40 XC=90 CD=400 CM=900
#在構成數字的時候,有下列規則:
#1、相同的數字連寫,所表示的數等於這些數字相加得到的數
#2、小的數字在大的數字的右邊,所表示的數等於這些數字相加得到的數
#3、小的數字,(限於Ⅰ、X和C)在大的數字的左邊,所表示的數等於大數減小數得到的數
print('''--------------------------------------------------
作者:20192428魏來
阿拉伯數字向羅馬數字的轉換
--------------------------------------------------''')
list = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
a = 0
while a < 9999 : #多次進行轉換:(9998次)
a = a+1
romannum = input('''--------------------------------------------------
請輸入羅馬數字(輸入范圍:1-3999):''')
result = 0
omit = -1 # omit為需省略的字符位
if romannum in list:
print(list[romannum])
else:
for b in range(len(romannum)): # 遍歷字符串的每一位:(0,len-1)
if b == omit: # 如果無需省略b
pass
elif b <= len(romannum)-2: # 如果還沒有遍歷到最后一位:(len-1-1)
if list[romannum[b]] < list[romannum[b+1]]: # 如果前一位對應值小於后一位的
result += list[romannum[b+1]] - list[romannum[b]] # 進行減操作
omit = b+1 # 省略下一位字符
else:
result += list[romannum[b]]
else: # 遍歷到最后一位
result += list[romannum[b]]
print('''對應阿拉伯數字為:{}
--------------------------------------------------'''.format(result))