[英]Characters incorrectly translated from Morse Code to English
我開始將摩爾斯電碼翻譯成英語,但出現了一個問題。 這是我的代碼:
morse_dict = {
'a': '.-',
'b': '-...',
'c': '-.-.',
'd': '-..',
'e': '.',
'f': '..-.',
'g': '--.',
'h': '....',
'i': '..',
'j': '.---',
'k': '-.-',
'l': '.-..',
'm': '--',
'n': '-.',
'o': '---',
'p': '.--.',
'q': '--.-',
'r': '.-.',
's': '...',
't': '-',
'u': '..-',
'v': '...-',
'w': '.--',
'x': '-..-',
'y': '-.--',
'z': '--..',
}
def morse_decrypt(message):
m1 = message.split()
new_str = []
letter = ''
for i,n in morse_dict.items():
if n in m1:
letter = str(i)
new_str.append(letter)
return ''.join(new_str)
print(morse_decrypt('... --- ...'))
>>>os
但是當我嘗試使用函數時,它會將每個字符打印一次。 我不知道是什么問題。 我做錯了什么?
您的morse_dict
將字母轉換為摩爾斯電碼字母。 但是你想要相反,因為你試圖解密而不是加密。 要么重寫你的字典,要么使用
morse_to_alpha = dict(map(reversed, morse_dict.items()))
翻轉鍵值對。
完成后,您可以在翻譯詞典中查找每個消息塊(而不是相反):
def morse_decrypt(message):
morse_to_alpha = dict(map(reversed, morse_dict.items()))
return "".join(map(morse_to_alpha.get, message.split()))
這仍然會破壞封裝。 morse_to_alpha
應該成為一個參數,這樣你就不會訪問全局狀態,並且為每個翻譯翻轉字典是浪費的。 我會把這些調整留給你處理。
也不清楚如何處理錯誤; 如果摩爾斯電碼無效,這將引發(未特別明確命名)異常。
您有一個以鍵為字母、以代碼為值的字典。
Python 字典是通過鍵而不是值來查找的(不幸的是),但是您可能會發現有一種方法可以解決這個問題。 像您一樣將字典放入字母和代碼的項目中,但將代碼放在第一個 FOR 循環中查找。 :)
def morse_decrypt(message):
global morse_dict
msgList = message.split(" ")
msgEnglish = ""
for codeLookup in msgList:
for letter, code in morse_dict.items():
if(code == codeLookup):
msgEnglish += letter
return msgEnglish
print(morse_decrypt('... --- ...'))
參考: 在字典中按值獲取鍵https://www.w3schools.com/python/python_dictionaries.asp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.