a013: 羅馬數字
題目: 讀入兩個正整數,輸出兩個數字差的絕對值。所有的數
字都必須以羅馬數字來表示。而連續四個相同符號出現時,
必須用減法規則來化簡之。
• 輸入說明:
每個輸入檔中會有一個或以上的測試資料。
每一行由兩個數
字組成一筆測試資料,且所有數字將會小於 4000。
檔案最後
會以符號 # 表示結束。
• 輸出說明:
每筆測試資料的答案必須輸出到檔案中,並且換行。
如果答
案為零,則須輸出字串 ZERO。
• 範例輸入: 範例輸出:
I I ZERO
MM II MCMXCVIII
#
# 羅馬數字轉數字
#Given a roman numeral, convert it to an integer.
#Input is guaranteed to be within the range from 1 to 3999.
def romanToInt(s):
"""
:type s: str
:rtype: int
"""
a = {'M': 1000, 'D': 500, 'C': 100, 'L': 50, 'X': 10, 'V': 5, 'I': 1}
sum = 0
for i in range(len(s) - 1): #range右邊界len(s) - 1 保證 i + 1不會下標越界
if a[s[i]] < a[s[i+1]]:
sum -= a[s[i]]
else:
sum += a[s[i]]
return sum + a[s[len(s) - 1]]
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
print ("10進制轉羅馬數字")
strX1=str(input("請輸入第一個羅馬數字 :"))
strX2=str(input("請輸入第二個羅馬數字 :"))
intX1=romanToInt(strX1)
intX2=romanToInt(strX2)
intY=abs(intX1-intX2)
strY=roman(intY)
print()
if strY=='' :
print("Zero")
else:
print(strY)
>>>
====================== RESTART: D:\Python_APSC\a013.py ======================
10進制轉羅馬數字
請輸入第一個羅馬數字 :I
請輸入第二個羅馬數字 :I
Zero
>>>
====================== RESTART: D:\Python_APSC\a013.py ======================
10進制轉羅馬數字
請輸入第一個羅馬數字 :MM
請輸入第二個羅馬數字 :II
MCMXCVIII
>>>
2017年12月19日 星期二
訂閱:
張貼留言 (Atom)
WOKWI DHT22 & LED , Node-Red + SQLite database
WOKWI DHT22 & LED , Node-Red + SQLite database Node-Red程式 [{"id":"6f0240353e534bbd","type":"comment&...
-
python pip 不是内部或外部命令 -- 解決方法 要安裝 Pyqt5 1. 首先,開啟命令提示字元。 2. 輸入 pip3 install pyqt5 好像不能執行 ! ! 錯誤顯示 : ‘ pip3 ’ 不是內部或外部命令、可執行的程式或批...
-
課程講義 下載 11/20 1) PPT 下載 + 程式下載 http://www.mediafire.com/file/cru4py7e8pptfda/106%E5%8B%A4%E7%9B%8A2-1.rar 11/27 2) PPT 下載...
-
• 認 識 PreFix、InFix、PostFix PreFix(前序式):* + 1 2 + 3 4 InFix(中序式): (1+2)*(3+4) PostFix(後序式):1 2 + 3 4 + * 後 序式的運算 例如: 運算時由 後序式的...
沒有留言:
張貼留言