#41185: Python 部分代碼


1554101-0@g.puiching.edu.mo (P6A29_1300題了)

學校 : 澳門培正中學
編號 : 216811
來源 : [60.246.150.90]
最後登入時間 :
2024-10-10 18:56:38
d369. 1. 羅馬數字 -- 96學年度全國資訊學科能力競賽 | From: [27.109.144.220] | 發表日期 : 2024-07-09 22:05

def roman(number):
    ROMANS = (('M',  1000),
          ('CM', 900),
          ('D',  500),
          ('CD', 400),
          ('C',  100),
          ('XC', 90),
          ('L',  50),
          ('XL', 40),
          ('X',  10),
          ('IX', 9),
          ('V',  5),
          ('IV', 4),
          ('I',  1))
    
    result=""

    for roman,value in ROMANS:
        while number>=value:
            number-=value
            result+=roman
    return result

def decimal(roman):
    table = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}  # 轉換對照表
    # roman = [i for i in input()]             # 將輸入的羅馬數字變成串列
    r = roman[::-1]                          # 反轉串列
    output = table[r[0]]                     # 讓 output 先等於第一個數字
    for i in range(1, len(r)):               # 從第二個數字開始依序取到最後一個數字
        if table[r[i]] < table[r[i-1]]:      # 如果後面數字比較小
            output = output - table[r[i]]    # 讓 output 減去後面的數字
        else:
            output = output + table[r[i]]    # 如果後面數字比較大,讓 output 加上後面的數字
    return output

# roman(number) 是將一個阿拉伯數字轉換成羅馬數字,而decimal(roman) 是將一個羅馬數字轉換成阿拉伯數字。

 
ZeroJudge Forum