4 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
你可以嘗試做這樣的事情:
def number_to_letter(encoded):
result = ""
buffer = ""
for ch in encoded:
if ch == '-':
if buffer and 0 < int(buffer) < 27:
result += chr(64 + int(buffer))
buffer = ""
elif ch.isdigit():
buffer += ch
else:
if buffer and 0 < int(buffer) < 27:
result += chr(64 + int(buffer))
return result
print(number_to_letter('1-3-5'))
輸出:
ACE
解釋:
我們循環(huán)每個(gè)字符并將其添加到某個(gè)緩沖區(qū)中。當(dāng)我們遇到-(分隔符)時(shí),我們嘗試解析緩沖區(qū)并重置它。最后我們?cè)龠M(jìn)行一次相同的解析并返回結(jié)果。
驗(yàn)證的工作方式是,每當(dāng)我們填充緩沖區(qū)時(shí),我們都會(huì)檢查數(shù)字有效性(使用.isdigit()),并且當(dāng)我們解析緩沖區(qū)時(shí),我們會(huì)檢查范圍約束。

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
沒(méi)有清單,好吧。但是聽(tīng)寫呢?
def abc(nums):
d = {'-':'','1':'A','2':'B','3':'C','4':'D','5':'E','6':'F','7':'G','8':'H','9':'I','0':'J'}
res = ''
for n in nums: res += d[n]
return res
print(abc('1-2-3-9-0')) # Output: ABCIJ
這是一個(gè)更正的版本:
def abc(nums):
d = {'-':'','1':'A','2':'B','3':'C','4':'D','5':'E','6':'F','7':'G','8':'H','9':'I','0':'J'}
res = ''
for n in nums:
if n in d:
res += d[n]
return res
print(abc('?-2-3-9-0')) # Output: BCIJ

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
這段代碼的方法是找到第一個(gè)“-”,然后將其存儲(chǔ)在哪里,這樣下次我們就可以在最后一個(gè)“-”之后查找第一個(gè)“-”
當(dāng)我的代碼中的注釋談?wù)撗h(huán)時(shí)意味著要經(jīng)歷一次循環(huán)(循環(huán)時(shí):)
def number_to_letter(encoded):
letterString = ""
startSubStr = 0
endSubStr = 0
looping = True
while looping:
if endSubStr > (len(encoded)-4):# if we're at the last number we don't look for '-'. we go to the end of the str and end the loop
endSubStr = len(encoded)
looping = False
else:
endSubStr = encoded.index('-', startSubStr) #find the first '-' after the '-' found in the last cycle
number = int(encoded[startSubStr:endSubStr]) #get the number between the '-' found in the last cycle through this loop and the '-' found in this one
if number < 27:
letter = chr(64 + int(number))
letterString += letter
startSubStr = endSubStr + 1 #set the start of the substring to the end so the index function doesn't find the '-' found in this cycle again
return letterString
print(number_to_letter("23-1-1-2")) #>>> WAAB
結(jié)果:WAAB

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
import string
alphabet = list(string.ascii_lowercase)
combination = "1-2-3"
def seperate(s, sep='-'):
return [s[:s.index(sep)]] + seperate(s[s.index(sep)+1:]) if sep in s else [s]
combination = seperate(combination)
print("".join([alphabet[int(i)-1] for i in combination]))
添加回答
舉報(bào)