這篇文章主要介紹了Python簡單實現阿拉伯數字和羅馬數位互相轉換,涉及Python針對字串與列表的遍曆、運算等相關操作技巧,有需要的朋友可以參考下
本文執行個體講述了Python實現阿拉伯數字和羅馬數位互相轉換功能。分享給大家供大家參考,具體如下:
前面一篇介紹了《Java實現的求解經典羅馬數字和阿拉伯數字相互轉換問題》,這裡來看看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 resdef 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 resif __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)
結果如下: