'''
羅馬數字是古羅馬所使用的計數系統,即使到了21世紀的現代,
還是很常見到它的蹤跡。
羅馬數字使用7個字母,
分別代表:I(1)、V(5)、X(10)、L(50)、C(100)、D(500)、M(1000),解讀方式是從左到右,把出現的字母所代表的數字加起來,但是如果右邊的數字比左邊大,則代表是大數字減去小數字,才是代表的數字,例如VIII是8,而IX是9。現在給你一個羅馬數字,你能解讀出它代表多少嗎?
輸入說明:
輸入一個羅馬數字(僅有 I、V、X、L、C、D、M 等字母,而且一定合乎羅馬數字的標準)。
輸出說明:
請輸出它代表的數字是多少。
範例輸入:
輸入1:
VIII
輸入2:
IX
範例輸出 :
輸出1:
8
輸出2:
9
'''
'''
Convert Roman Numerals
Arabic numerals:
3999
Roman numerals:
MMMCMXCIX
Arabic
numerals 3 9 9 9
0
1 M C X I
2 MM CC XX II
3 MMM CCC XXX III
4 CD XL IV
5 D L V
6 DC LX VI
7 DCC LXX VII
8 DCCC LXXX VIII
9 CM XC IX
'''
#Given a roman numeral, convert it to an integer.
#Input is guaranteed to be within the range from 1 to 3999.
values = (('M', 1000),
('CM', 900),
('DCCC',800),
('DCC',700),
('DC',600),
('D', 500),
('CD', 400),
('CCC',300),
('CC',200),
('C', 100),
('XC', 90),
('LXXX',80),
('LXX',70),
('LX',60),
('L', 50),
('XL', 40),
('XXX',30),
('XX',20),
('X', 10),
('IX', 9),
('VIII',8),
('VII',7),
('VI',6),
('V', 5),
('IV', 4),
('III',3),
('II',2),
('I', 1))
def RomanToInt(year):
result = 0
boom = []
for i in range(len(year)):
for letter, value in values:
if year[i] == letter:
boom.append(value)
boom.append(0)
for i in range(len(year)):
if boom[i] >= boom[i+1]:
result = result + boom[i]
else:
result = result - boom[i]
return result
s=str(input("Enter a roman numeral > "))
print(RomanToInt(s))
====================== RESTART: F:/Python_APSC/b012.py ======================
Enter a roman numeral > DXCVIII
598
>>>
====================== RESTART: F:/Python_APSC/b012.py ======================
Enter a roman numeral > MMMCMXCIX
3999
>>>
沒有留言:
張貼留言