程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

使用 Python 程序實現摩斯密碼翻譯器「建議收藏」

編輯:Python

大家好,又見面了,我是你們的朋友全棧君。

摩斯密碼是一種將文本信息作為一系列通斷的音調、燈光或咔嗒聲傳輸的方法,無需特殊設備,熟記的小伙伴即可直接翻譯。它以電報發明者Samuel F. B. Morse的名字命名。

算法

算法非常簡單。英語中的每個字符都被一系列“點”和“破折號”代替,或者有時只是單數的“點”或“破折號”,反之亦然。

加密

  1. 在加密的情況下,我們一次一個地從單詞中提取每個字符(如果不是空格),並將其與存儲在我們選擇的任何數據結構中的相應摩斯密碼匹配(如果您使用 python 編碼,字典可以變成在這種情況下非常有用)
  2. 將摩斯密碼存儲在一個變量中,該變量將包含我們編碼的字符串,然後我們在包含結果的字符串中添加一個空格。
  3. 在用摩斯密碼編碼時,我們需要在每個字符之間添加 1 個空格,在每個單詞之間添加 2 個連續空格。
  4. 如果字符是空格,則向包含結果的變量添加另一個空格。我們重復這個過程,直到我們遍歷整個字符串

解密

  1. 在解密的情況下,我們首先在要解碼的字符串末尾添加一個空格(這將在後面解釋)。
  2. 現在我們繼續從字符串中提取字符,直到我們沒有任何空間。
  3. 一旦我們得到一個空格,我們就會在提取的字符序列(或我們的莫爾斯電碼)中查找相應的英語字符,並將其添加到將存儲結果的變量中。
  4. 請記住,跟蹤空間是此解密過程中最重要的部分。一旦我們得到 2 個連續的空格,我們就會向包含解碼字符串的變量添加另一個空格。
  5. 字符串末尾的最後一個空格將幫助我們識別莫爾斯電碼字符的最後一個序列(因為空格充當提取字符並開始解碼它們的檢查)。

執行

Python 提供了一種稱為字典的數據結構,它以鍵值對的形式存儲信息,這對於實現諸如摩爾斯電碼之類的密碼非常方便。我們可以將摩斯密碼表保存在字典中,其中 (鍵值對)=>(英文字符-莫爾斯電碼) 。明文(英文字符)代替密鑰,密文(摩斯密碼)形成相應密鑰的值。鍵的值可以從字典中訪問,就像我們通過索引訪問數組的值一樣,反之亦然。

摩斯密碼對照表

# 實現摩斯密碼翻譯器的 Python 程序
'''
VARIABLE KEY
'cipher' -> '存儲英文字符串的摩斯翻譯形式'
'decipher' -> '存儲摩斯字符串的英文翻譯形式'
'citext' -> '存儲單個字符的摩斯密碼'
'i' -> '計算摩斯字符之間的空格'
'message' -> '存儲要編碼或解碼的字符串
'''
# 表示摩斯密碼圖的字典
MORSE_CODE_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':'--..',
'1':'.----', '2':'..---', '3':'...--',
'4':'....-', '5':'.....', '6':'-....',
'7':'--...', '8':'---..', '9':'----.',
'0':'-----', ', ':'--..--', '.':'.-.-.-',
'?':'..--..', '/':'-..-.', '-':'-....-',
'(':'-.--.', ')':'-.--.-'}
# 根據摩斯密碼圖對字符串進行加密的函數
def encrypt(message):
cipher = ''
for letter in message:
if letter != ' ':
# 查字典並添加對應的摩斯密碼
# 用空格分隔不同字符的摩斯密碼
cipher += MORSE_CODE_DICT[letter] + ' '
else:
# 1個空格表示不同的字符
# 2表示不同的詞
cipher += ' '
return cipher
# 將字符串從摩斯解密為英文的函數
def decrypt(message):
# 在末尾添加額外空間以訪問最後一個摩斯密碼
message += ' '
decipher = ''
citext = ''
for letter in message:
# 檢查空間
if (letter != ' '):
# 計數器來跟蹤空間
i = 0
# 在空格的情況下
citext += letter
# 在空間的情況下
else:
# 如果 i = 1 表示一個新字符
i += 1
# 如果 i = 2 表示一個新詞
if i == 2 :
# 添加空格來分隔單詞
decipher += ' '
else:
# 使用它們的值訪問密鑰(加密的反向)
decipher += list(MORSE_CODE_DICT.keys())[list(MORSE_CODE_DICT
.values()).index(citext)]
citext = ''
return decipher
# 硬編碼驅動函數來運行程序
def main():
message = "JUEJIN-HAIYONG"
result = encrypt(message.upper())
print (result)
message = ".--- ..- . .--- .. -. -....- .... .- .. -.-- --- -. --."
result = decrypt(message)
print (result)
message = "I LOVE YOU"
result = encrypt(message.upper())
print (result)
message = ".. .-.. --- ...- . -.-- --- ..-"
result = decrypt(message)
print (result)
# 執行主函數
if __name__ == '__main__':
main()

輸出:

.--- ..- . .--- .. -. -....- .... .- .. -.-- --- -. --.
JUEJIN-HAIYONG
.. .-.. --- ...- . -.-- --- ..-
I LOVE YOU

快速總結——Python 程序實現摩斯密碼翻譯器

以上就是本篇文章的全部內容,您使用 Python 程序實現摩斯密碼翻譯器。我們希望本篇博客能夠幫助到您,博主也在學習進行中,如有什麼錯誤的地方還望批評指正。

發布者:全棧程序員棧長,轉載請注明出處:https://javaforall.cn/129585.html原文鏈接:https://javaforall.cn


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved