python实现输入数字转为中文数字(python实现阿拉伯数字和罗马数字的互相转换)
python实现输入数字转为中文数字(python实现阿拉伯数字和罗马数字的互相转换)
题目很简单,如果之前也做过这种题目的话,相信对于什么是罗马数字就不会很陌生了,罗马数字是很古老的计数方法,现在的一些地方还有见到它的使用,下面简单贴两张维基百科的图片简单回顾一下罗马数字:
今天简单实现一下,阿拉伯数字和罗马数字之间的相互转化问题,很简单就不多说了,下面是具体的实现:
#!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:阿拉伯数字和罗马数字的互相转换 ''' def transform_alabo2_roman_num(one_num): ''' 将阿拉伯数字转化为罗马数字 ''' num_list=[1000 900 500 400 100 90 50 40 10 9 5 4 1] str_list=["M" "CM" "D" "CD" "C" "XC" "L" "XL" "X" "IX" "V" "IV" "I"] res='' for i in range(len(num_list)): while one_num>=num_list[i]: one_num-=num_list[i] res =str_list[i] return res def transform_roman_num2_alabo(one_str): ''' 将罗马数字转化为阿拉伯数字 ''' define_dict={'I':1 'V':5 'X':10 'L':50 'C':100 'D':500 'M':1000} if one_str=='0': return 0 else: res=0 for i in range(0 len(one_str)): if i==0 or define_dict[one_str[i]]<=define_dict[one_str[i-1]]: res =define_dict[one_str[i]] else: res =define_dict[one_str[i]]-2*define_dict[one_str[i-1]] return res # #下面这种写法也可以 # for i in range(len(one_str)): # if i > 0 and define_dict[one_str[i]] > define_dict[one_str[i - 1]]: # res -= define_dict[one_str[i - 1]] # res = define_dict[one_str[i]] - define_dict[one_str[i - 1]] # else: # res = define_dict[one_str[i]] # return res if __name__ == '__main__': print '**************将罗马数字转化为阿拉伯数字**************' one_str_list=['DII' 'XV' 'MDCLXVI' 'XII' 'VIII' 'XCIX' 'XII'] for one_str in one_str_list: print one_str '----->' transform_roman_num2_alabo(one_str) print '**************将阿拉伯数字转化为罗马数字**************' one_num_list=[77 66 55 8 1200 34 65 3 21 99] for one_num in one_num_list: print one_num '----->' transform_alabo2_roman_num(one_num)
结果如下:
**************将罗马数字转化为阿拉伯数字************** DII -----> 502 XV -----> 15 MDCLXVI -----> 1666 XII -----> 12 VIII -----> 8 XCIX -----> 99 XII -----> 12 **************将阿拉伯数字转化为罗马数字************** 77 -----> LXXVII 66 -----> LXVI 55 -----> LV 8 -----> VIII 1200 -----> MCC 34 -----> XXXIV 65 -----> LXV 3 -----> III 21 -----> XXI 99 -----> XCIX [Finished in 0.6s]