我必須讓這個程式接收編碼字串并回傳正常文本。例如:
input = 42 32 53 53 63 *43 *21 61 *61 21 73 52
output = hello i am mark
我有這本字典的等價物:
keypad= {'21': 'a', '22': 'b', '23': 'c', '31': 'd', '32': 'e', '33': 'f', '41': 'g', '42': 'h', '43': 'i',
'51': 'j', '52': 'k', '53': 'l', '61': 'm', '62': 'n', '63': 'o', '71': 'p', '72': 'q', '74': 'r',
'74': 's', '81': 't', '82': 'u', '83': 'v', '91': 'w', '93': 'x', '93': 'y', '94': 'z', '*': ' '}
我需要按原樣使用它。我想我需要迭代每個數字并獲取字典中的鍵并將其添加到一個空字串中,但我不知道該怎么做。如果有人有想法,我將非常感激。
uj5u.com熱心網友回復:
我注意到您的字典中缺少一些鍵。你需要先解決這個問題,然后試試這個:
for item in inp.split():
if item.startswith("*"):
print(keypad["*"], end="")
item = item[1:]
print(keypad[item], end="")
print()
您首先檢查它以查看它的數字以星號開頭,如果是這樣您需要*單獨列印的值,然后item = item[1:]您更改*N為N并繼續。如果您不想直接列印到標準輸出,您可以有一個空字串變數,而不是列印只是將值與該字串連接:
result = ""
for item in inp.split():
if item.startswith("*"):
result = keypad["*"]
item = item[1:]
result = keypad[item]
print(result)
如果您有興趣,也可以使用生成器運算式來撰寫:
print(
"".join(
f"{keypad['*']}{keypad[i[1:]]}" if i.startswith("*") else keypad[i]
for i in inp.split()
)
)
uj5u.com熱心網友回復:
我希望這能幫到您。
input_value = input('Write something: ').strip().split(' ')
keypad= {'21': 'a', '22': 'b', '23': 'c', '31': 'd', '32': 'e', '33': 'f', '41': 'g', '42': 'h', '43': 'i',
'51': 'j', '52': 'k', '53': 'l', '61': 'm', '62': 'n', '63': 'o', '71': 'p', '72': 'q', '73': 'r',
'74': 's', '81': 't', '82': 'u', '83': 'v', '91': 'w', '93': 'x', '93': 'y', '94': 'z', '*': ' '}
output = ""
for a in input_value:
if '*' not in a:
output = keypad[a]
elif a.startswith('*'):
output =' '
output =keypad[a[1:]]
elif a.endswith('*'):
output =keypad[a[:-1]]
output =' '
print(output)
我知道當鍵不在字典中時,上面的代碼會給你一個錯誤然后你可以使用這個。
input_value = input('Write something: ').strip().split(' ')
keypad= {'21': 'a', '22': 'b', '23': 'c', '31': 'd', '32': 'e', '33': 'f', '41': 'g', '42': 'h', '43': 'i',
'51': 'j', '52': 'k', '53': 'l', '61': 'm', '62': 'n', '63': 'o', '71': 'p', '72': 'q', '73': 'r',
'74': 's', '81': 't', '82': 'u', '83': 'v', '91': 'w', '93': 'x', '93': 'y', '94': 'z', '*': ' '}
output = ""
for a in input_value:
try:
if '*' not in a:
output = keypad[a]
elif a.startswith('*'):
output =' '
output =keypad[a[1:]]
elif a.endswith('*'):
output =keypad[a[:-1]]
output =' '
except KeyError:
pass
print(output)
uj5u.com熱心網友回復:
另外一個選項:
- 空間分割,回圈
- 按數字分割,回圈
- 檢查鍵盤中是否存在鍵
- 附加到輸出
import re
input = '42 32 53 53 63 *43 *21 61 *61 21 73 52'
keypad= {'21': 'a', '22': 'b', '23': 'c', '31': 'd', '32': 'e', '33': 'f', '41': 'g', '42': 'h', '43': 'i', '51': 'j', '52': 'k', '53': 'l', '61': 'm', '62': 'n', '63': 'o', '71': 'p', '72': 'q', '74': 'r', '74': 's', '81': 't', '82': 'u', '83': 'v', '91': 'w', '93': 'x', '93': 'y', '94': 'z', '*': ' '}
result = ''
for i in input.split(' '):
for j in list(filter(None, re.split('(\d )', i))):
if j in keypad:
result = keypad[j]
else:
result = '?'
print(input)
print(result)
42 32 53 53 63 *43 *21 61 *61 21 73 52
hello i am ma?k
由于 key73中不存在keypad,因此被解碼為?,您可以else在 key 不存在時將 更改為所需的操作。
在線嘗試!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/465124.html
上一篇:按權重對字典進行加權洗牌
下一篇:在串列字典中查找回圈
