2019-2020-1學期 20192428 第二周作業——阿拉伯數字轉換羅馬數字


關於羅馬數字轉換為阿拉伯數字的Python程序編程

阿拉伯數字計數法作為傳統的位置計數方法,想被羅馬數字轉換是一件較為困難的事情,羅馬數字的規律我進行了總結,如下:

  1. 相同的數字連寫,所表示的數等於這些數字相加得到的數(最多只能連寫三次
  2. 小的數字在大的數字的右邊,所表示的數等於這些數字相加得到的數
  3. 小的數字,(限於Ⅰ、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))

若有補充或者改進,歡迎留言。





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM