我寫了這段代碼:
admitted_List = [1, 5, 10, 50, 100, 500, 1000]
tempString = ""
finalList = []
for i in range(len(xkcd)-1):
if int(xkcd[i] xkcd[i 1]) in admitted_List:
tempString = xkcd[i]
continue
else:
tempString = xkcd[i]
finalList.append(int(tempString))
tempString = ""
return (finalList)
這基本上接受(xkcd)一串羅馬數字的權重,如“10010010010100511”,它應該回傳我的權重串列,如 [100, 100, 100, 10, 100, 5, 1, 1] 以便 CCC XC VII有道理,當然字串的前 4 個字符使數字 1001 在羅馬數字中沒有任何意義,所以我的數字將是 100,然后檢查應該停止并開始一個新數字。
我嘗試了上述演算法。如果代碼不好或正文問題不好,請原諒,我對 python 和堆疊溢位很陌生。
uj5u.com熱心網友回復:
試試這個代碼:
def func(xkcd):
admitted_List = ["1000", "500", "100", "50", "10", "5", "1"]
tempString = ""
finalList = []
loop_out = 0
while loop_out == 0:
for roman_num in admitted_List:
#print(roman_num)
if (xkcd.startswith(roman_num)):
finalList.append(int(roman_num))
xkcd = xkcd[len(roman_num):]
if len(xkcd) == 0:
loop_out = 1
break
return (finalList)
xkcd = '10010010010100511'
print(func(xkcd))
它列印以下串列: [100, 100, 100, 10, 100, 5, 1, 1]
uj5u.com熱心網友回復:
無需額外復雜的功能!re.split()與串列理解結合使用怎么樣?
text = '10010010010100505011'
[i j for i,j in zip(re.split('(1|5)',text)[1::2],re.split('(1|5)',text)[::2][1:])]
回報:
['100', '100', '100', '10', '100', '50', '50', '1', '1']
然后我們可以將它們映射到羅馬,或者int通過使用int(i j)上面提出的解決方案轉換為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/522499.html
上一篇:在特定范圍內列出反向
下一篇:將資料從一個表拆分到另一個表
