本文实例讲述了Python实现阿拉伯数字和罗马数字的互相转换功能。分享给大家供大家参考,具体如下:
前面一篇介绍了《Java实现的求解经典罗马数字和阿拉伯数字相互转换问题》,这里来看看Python的实现方法。
题目很简单,如果之前也做过这种题目的话,相信对于什么是罗马数字就不会很陌生了,罗马数字是很古老的计数方法,现在的一些地方还有见到它的使用,下面简单贴两张维基百科的图片简单回顾一下罗马数字:
今天简单实现一下,阿拉伯数字和罗马数字之间的相互转化问题,很简单就不多说了,下面是具体的实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#!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) |
结果如下:
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/together_cz/article/details/76725363