一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python實現將羅馬數字轉換成普通阿拉伯數字的方法

Python實現將羅馬數字轉換成普通阿拉伯數字的方法

2020-09-30 13:52不得閑 Python

這篇文章主要介紹了Python實現將羅馬數字轉換成普通阿拉伯數字的方法,簡單分析了羅馬數字的構成并結合實例形式給出了Python轉換羅馬數字為阿拉伯數字的實現方法,需要的朋友可以參考下

本文實例講述了Python實現將羅馬數字轉換成普通阿拉伯數字的方法。分享給大家供大家參考,具體如下:

羅馬數字,我們在某些電視中或者現實生活中都曾經看到過,近日,學習Python時,也遇到了羅馬數字的解說,于是順便寫了一個小程序來練習羅馬數字到我們日常生活普通數字之間的轉換的小函數。

首先,咱們了解一下,羅馬數字的潛在法則,

在羅馬數字中,利用7個不同字母進行重復或者組合來表達各式各樣的數字。

I = 1
V = 5
X = 10
L = 50
C = 100
D = 500
M = 1000

其組合關系是:

上面的字符最多能同時連續的使用三次

比如:4,羅馬數字就應該是IV,而不是IIII,超過三個組合時,就要使用低高組合,4就是I和V的組合,I表示1,V表示5

函數使用方法:

?
1
getRomanNum('MDCCCLXXXVIII')

就會獲得1888

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
def getRomanNum(RomanStr):
 """Roman numerals will be converted into digital,RomanStr is a RomanString"""
   import re
   if re.search('^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$',RomanStr)!=None:
     NumDic = {"pattern":"","retNum":0}
     RomanPattern = {
       "0":('','','','M'),
       "1":('CM','CD','D','C',100),
       "2":('XC','XL','L','X',10),
       "3":('IX','IV','V','I',1)
       }
     i = 3
     NumItems = sorted(RomanPattern.items())
     for RomanItem in NumItems:
       if RomanItem[0] != '0':
         patstr = NumDic["pattern"].join(['',RomanItem[1][0]])
         if re.search(patstr,RomanStr) != None:
           NumDic["retNum"] += 9*RomanItem[1][4]
           NumDic["pattern"] = patstr
         else:
           patstr = NumDic["pattern"].join(['',RomanItem[1][1]])
           if re.search(patstr,RomanStr) != None:
             NumDic["retNum"] += 4*RomanItem[1][4]
             NumDic["pattern"] = patstr
           else:
             patstr = NumDic["pattern"].join(['',RomanItem[1][2]])
             if re.search(patstr,RomanStr) != None:
               NumDic["retNum"] += 5*RomanItem[1][4]
               NumDic["pattern"] = patstr
       if NumDic["pattern"] == '':
         NumDic["pattern"] = '^'
       tempstr = ''
       sum = 0
       for k in range(0,4):
         pstr = RomanItem[1][3].join(['','{']).join(['',str(k)]).join(['','}'])
         patstr = NumDic["pattern"].join(['',pstr])
         if re.search(patstr,RomanStr) != None:
           sum = k*(10**i)
           tempstr = patstr
       if tempstr <> '':
         NumDic["pattern"] = tempstr
       else:
         NumDic["pattern"] = patstr
       NumDic['retNum'] += sum
       i -= 1
     return NumDic['retNum']
   else:
     print 'String is not a valid Roman numerals'

希望本文所述對大家Python程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品视频免费一区二区三区 | 亚洲精品第二页 | 国产精品特黄毛片 | 久久精品亚洲国产AV涩情 | 国产精品久久久久久久免费大片 | xxx95日本老师xxx学生 | a国产在线 | 色中色导航 | 免费高清观看 | 青草视频在线观看视频 | 日本一区二区视频在线 | 国产精品视频自拍 | 国产精品刺激好大好爽视频 | 青柠影视在线播放观看高清 | 成人中文字幕在线高清 | 久久精品123 | 24adc年龄18岁欢迎大驾光临 | 91桃花| 日韩亚洲欧美综合一区二区三区 | 久久国产精品永久免费网站 | 国产午夜不卡 | 欧洲女同同性videos0 | 国产一区二区三区久久小说 | 国产成人a∨麻豆精品 | 欧美一级免费看 | 草草视频在线观看最新 | 欧美xxoo做爰猛烈视频 | 亚洲精品一区二区三区在线观看 | 青青草国产青春综合久久 | 2022国产麻豆剧果冻传媒入口 | 亚洲国产99 | 午夜dj影院在线视频观看完整 | 日韩精品福利视频一区二区三区 | 国产精品高清视亚洲一区二区 | 精品久久成人免费第三区 | 无人区在线观看免费观看 | 久久国内精品 | 美日韩一区二区三区 | www.87福利| 国产日产欧产精品精品软件 | 日本免费观看95视频网站 |