#36894: python 解題思路


tu.a.yuan.2022@gmail.com (凃阿鳶)

學校 : 新北市立板橋高級中學
編號 : 239751
來源 : [1.162.83.71]
最後登入時間 :
2024-01-23 15:32:58
a013. 羅馬數字 -- NPSC 模擬試題 | From: [36.228.7.121] | 發表日期 : 2023-08-15 16:17

由題幹可知「檔案最後會以符號 # 表示結束」,輸入內容不確定數量。在這種情況下,應該使用有前提的無限循環。意即帶有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屬於減法規則,可依倍數類推,最後只要知道甚麼是減法規則,再把其值和其他值用加法規則處裡即可。

 
ZeroJudge Forum