罗马数字转化为阿拉伯数字
罗马数字转化为阿拉伯数字
罗马数字是位置计数吗?它的缺点是什么?
位置计数法的定义:一种表达数字的系统,数位按照顺序排列 ,每个数位有一个位值,数字的值是每个数位和位值的乘积之和。--引用自《计算机科学概论》
罗马数字使用规则:1.相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;
2.小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
3.小的数字(限于 I、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
4.正常使用时、连写的数字重复不得超过三次;
5.在一个数的上面画一条横线、表示这个数扩大 1000 倍。 --引用自《罗马数字转换阿拉伯数字0~3999》
比较两者的规则可以发现,罗马计数法符合位置计数法的定义,所以罗马计数法是位置计数法。
将自己的八位学号转化为罗马数字。
MMXVIIII MCCCXII
将罗马数字转化为阿拉伯数字
第一个版本的运行图片
第二个版本的运行图片
程序问题:只能准确转化部分罗马数字
n天后想起来自己重写了这个代码,更新一下。emmm
def romanToInt(s):
d = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
n = len(s)
ans = 0
for i in range(n):
if i<n and d[s[i]] > d[s[i-1]] and i > 0:
ans += d[s[i]] - 2*d[s[i-1]]
else:
ans += d[s[i]]
return ans
s =input("enter >>>")
print(romanToInt(s))