本文實例講述了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