罗马数字转化为阿拉伯数字

罗马数字转化为阿拉伯数字

罗马数字是位置计数吗?它的缺点是什么?

位置计数法的定义:一种表达数字的系统,数位按照顺序排列 ,每个数位有一个位值,数字的值是每个数位和位值的乘积之和。--引用自《计算机科学概论》

罗马数字使用规则: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)) 
posted @ 2019-10-16 22:20  PuTa0  阅读(579)  评论(4编辑  收藏  举报