2019-2020-1学期 20192428 第二周作业——阿拉伯数字转换罗马数字

关于罗马数字转换为阿拉伯数字的Python程序编程

阿拉伯数字计数法作为传统的位置计数方法,想被罗马数字转换是一件较为困难的事情,罗马数字的规律我进行了总结,如下:

  1. 相同的数字连写,所表示的数等于这些数字相加得到的数(最多只能连写三次
  2. 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数
  3. 小的数字,(限于Ⅰ、X和C)在大的数字的左边,所表示的数等于大数减小数得到的数

因此,借助len函数,常规的判断语句以及循环语句,基础的print,input等函数,我成功编辑出这一个程序。

代码如下:(可以借鉴,严禁抄袭

#阿拉伯数字转换罗马数字1~3999
#I=1 V=5 X=10 L=50 C=100 D=500 M=1000 IV=4 IX=9 XL=40 XC=90 CD=400 CM=900
#在构成数字的时候,有下列规则:
#1、相同的数字连写,所表示的数等于这些数字相加得到的数
#2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数
#3、小的数字,(限于Ⅰ、X和C)在大的数字的左边,所表示的数等于大数减小数得到的数

print('''--------------------------------------------------
作者:20192428魏来
阿拉伯数字向罗马数字的转换
--------------------------------------------------''')
list = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
a = 0
while a < 9999 : #多次进行转换:(9998次)
    a = a+1
    romannum = input('''--------------------------------------------------
请输入罗马数字(输入范围:1-3999):''')
    result = 0
    omit = -1  # omit为需省略的字符位
    if romannum in list:
        print(list[romannum])
    else:
        for b in range(len(romannum)):  # 遍历字符串的每一位:(0,len-1)
            if b == omit:  # 如果无需省略b
                pass
            elif b <= len(romannum)-2:  # 如果还没有遍历到最后一位:(len-1-1)
                if list[romannum[b]] < list[romannum[b+1]]:  # 如果前一位对应值小于后一位的
                    result += list[romannum[b+1]] - list[romannum[b]]  # 进行减操作
                    omit = b+1  # 省略下一位字符
                else:
                    result += list[romannum[b]]
            else:  #  遍历到最后一位
                result += list[romannum[b]]
        print('''对应阿拉伯数字为:{}
--------------------------------------------------'''.format(result))

若有补充或者改进,欢迎留言。




posted @ 2019-10-11 17:09  岁岁敲代码  阅读(735)  评论(4编辑  收藏  举报