由題幹可知「檔案最後會以符號 # 表示結束」,輸入內容不確定數量。在這種情況下,應該使用有前提的無限循環。意即帶有if/else的while True
創造roman_dict字典,儲存對應值:{'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}
運用def定意函式roman_to_int(sth),包含以下內容:
創造shift及num變數,儲存位移值及數字總和(int)
運用while shift < len(sth)創造一個有限循環,這是為了避免循環到不存在的值
根據羅馬數字規則,運用if/else判斷減法/加法規則構成
運用return回傳值num
運用def定意函式int_to_roman(num),包含以下內容:
創造roman變數,儲存數字總和(roman)
運用for循環對應羅馬數字及數字,同步將羅馬數字新增到roman,並將數字從num刪除
運用return回傳值roman
運用while True搭配if/else,檢測輸入是否為#,並執行相應設置
運用前幾題提過的技巧處理輸入
創造a, b儲存兩數,創造diff儲存差值
調用roman_to_int(sth)及int_to_roman(num)處理相關內容
運用if/else判斷diff是否為0,並執行相應設置
注意:兩數相減記得加上絕對值abs()
補充:在羅馬規則中,減法的性質是被加法包起來的,就像幾何中的小圓和大圓,只需專注在是不是減法規則即可。羅馬數字以5個為一組,1, 5屬於原本就有,2, 3屬於加法規則,4屬於減法規則,可依倍數類推,最後只要知道甚麼是減法規則,再把其值和其他值用加法規則處裡即可。