本文实例讲述了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