18、設計一程式可將最長含10個字元的字串讀入, 每一個字元均代表某一數值
的羅馬數表示法。將讀入之羅馬數及其相對應之阿拉伯數一起列印出來。
羅馬數和字元之對應表如下:
M 1000
D 500
C 100
L 50
X 10
V 5
I 1
你的輸入有下列幾組:
1.VII
2.LXXXVII
3.CCXIX
4.MCCCLIV
5.MMDCLXXIII
6.MCDLXXVI
範例一
|
範例二
|
範例三
|
範例四
|
範例五
|
範例六
|
|
輸入
|
VII
|
LXXXVII
|
CCXIX
|
MCCCLIV
|
MMMIM
|
ICXIa
|
輸出
|
7
|
87
|
219
|
1354
|
3999
|
不合法
|
M
|
1000
|
VII
|
7
|
|
D
|
500
|
LXXXVII
|
87
|
|
C
|
100
|
CCXIX
|
221
|
|
L
|
50
|
MCCCLIV
|
1356
|
|
X
|
10
|
MMMIM
|
4001
|
|
V
|
5
|
ICXI
|
112
|
|
I
|
1
|
MCDLXXVI
|
1676
|
程式 :
#coding=utf8
#18、設計一程式可將最長含10個字元的字串讀入, 每一個字元均代表某一數值
# 的羅馬數表示法。將讀入之羅馬數及其相對應之阿拉伯數一起列印出來。
# 羅馬數和字元之對應表如下:
#
# M 1000 VII 7
# D 500 LXXXVII 87
# C 100 CCXIX 221
# L 50 MCCCLIV 1356
# X 10 MMMIM 4001
# V 5 ICXI 112
# I 1 MCDLXXVI 1676
print("#18、設計一程式可將最長含10個字元的字串讀入, 每一個字元均代表某一數值")
print("# 的羅馬數表示法。將讀入之羅馬數及其相對應之阿拉伯數一起列印出來。")
print("# 羅馬數和字元之對應表如下: ")
print("#")
print("# M 1000 VII 7")
print("# D 500 LXXXVII 87")
print("# C 100 CCXIX 221")
print("# L 50 MCCCLIV 1356")
print("# X 10 MMMIM 4001")
print("# V 5 ICXI 112")
print("# I 1 MCDLXXVI 1676")
def f(x1):
if x1== 'M':
return 1000
elif x1=='m':
return 1000
elif x1=='D':
return 500
elif x1=='d':
return 500
elif x1=='C':
return 100
elif x1=='c':
return 100
elif x1=='L':
return 50
elif x1=='l':
return 50
elif x1=='X':
return 10
elif x1=='x':
return 10
elif x1=='V':
return 5
elif x1=='v':
return 5
elif x1=='I':
return 1
elif x1=='i':
return 1
else :
return 99
while True:
x=int(input("請你輸入幾筆要轉換 (大於2 ,小於10):"))
try:
x = int(x)
except ValueError:
print ('這是不合法的輸入. 請再輸入一次...')
continue
if ( x > 2 and x <=10 ):
break
for i in range(x):
a=(input("請輸入羅馬數字 :"))
x1=repr(a) #轉成 字串
x1=x1[1:len(x1)-1]
#for j in range (0,len(x1)): #for debug
# print(x1[j]) #for debug
x2=0
j=1
for j in range (0,len(x1)):
x3=f(x1[j])
# print(x3) #for debug
if x3==99 :
print ('這是不合法的輸入. 請再輸入一次...')
x2="不合法的輸入"
break
else:
x2=x2+x3
j=j+1
print("羅馬數字及其相對應之阿拉伯數")
print("羅馬數字 : ", x1," 對應之阿拉伯數 :", x2)
================= RESTART: D:/程式語言 Python 入門/50題/Ex50-18.py =================
#18、設計一程式可將最長含10個字元的字串讀入, 每一個字元均代表某一數值
# 的羅馬數表示法。將讀入之羅馬數及其相對應之阿拉伯數一起列印出來。
# 羅馬數和字元之對應表如下:
#
# M 1000 VII 7
# D 500 LXXXVII 87
# C 100 CCXIX 221
# L 50 MCCCLIV 1356
# X 10 MMMIM 4001
# V 5 ICXI 112
# I 1 MCDLXXVI 1676
請你輸入幾筆要轉換 (大於2 ,小於10):5
請輸入羅馬數字 :LXXXVII
羅馬數字及其相對應之阿拉伯數
羅馬數字 : LXXXVII 對應之阿拉伯數 : 87
請輸入羅馬數字 :CCXIX
羅馬數字及其相對應之阿拉伯數
羅馬數字 : CCXIX 對應之阿拉伯數 : 221
請輸入羅馬數字 :MCCCLIV
羅馬數字及其相對應之阿拉伯數
羅馬數字 : MCCCLIV 對應之阿拉伯數 : 1356
請輸入羅馬數字 :MMMIM
羅馬數字及其相對應之阿拉伯數
羅馬數字 : MMMIM 對應之阿拉伯數 : 4001
請輸入羅馬數字 :MCDaLXXVI
這是不合法的輸入. 請再輸入一次...
羅馬數字及其相對應之阿拉伯數
羅馬數字 : MCDaLXXVI 對應之阿拉伯數 : 不合法的輸入
>>>
沒有留言:
張貼留言