测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A48751. 罗马数字问题:罗马数字包含以下七种字符: I, V, X, L, C, D 和 M。27 写做 XXVII, 即为 XX + V + II 。 通常情况下, 罗马数字中小的数字在大的数字的右边。 但也存在特例, 例如 4 不写做 IIII 而是 IV。 数字 1 在数字 5 的左边, 所表示的数等于大数 5 减去数 1 得到的数值 4。 同样地, 数字 9 表示为 IX。这个特殊的规则只适用于以…

填空题 困难

题目描述

罗马数字问题:

罗马数字包含以下七种字符: I, V, X, L, C, D 和 M。

27 写做 XXVII, 即为 XX + V + II 。 通常情况下, 罗马数字中小的数字在大的数字的右

边。 但也存在特例, 例如 4 不写做 IIII 而是 IV。 数字 1 在数字 5 的左边, 所表示的数等于大

数 5 减去数 1 得到的数值 4。 同样地, 数字 9 表示为 IX。

这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边, 来表示 4 和 9。

X 可以放在 L (50) 和 C (100) 的左边, 来表示 40 和 90。

C 可以放在 D (500) 和 M (1000) 的左边, 来表示 400 和 900。

现编写输入一个罗马数字, 输出其整数结果, 请编程实现上述功能, 或补全代码。

例如, 当输入 XXII 时, 输出 22; 当输入 MCMXC 时, 输出 1990.


rmdict = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}

rm = list(input("请输入正确的罗马数字: "))

num, prew = 0, 1

for ch in rm[::-1]:

w =____①____

if prew > w:

num = num - w

else :

num = num + w

prew =____②____

print(____③____)

参考答案

rmdict = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000} rm = list(input("请输入正确的罗马数字: ")) num, prew = 0, 1 for ch in rm[::-1]: w =rmdict[ch] if prew > w: num = num - w else : num = num + w prew =w print(num)
上一题 下一题