最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python制作摩斯密碼翻譯器

 更新時(shí)間:2021年11月30日 10:17:44   作者:海擁?  
摩斯密碼是一種將文本信息作為一系列通斷的音調(diào)、燈光或咔嗒聲傳輸?shù)姆椒?,本文將介紹如何通過Python制作摩斯密碼翻譯器,感興趣的童鞋可以關(guān)注一下

分析

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

算法

算法非常簡單。英語中的每個(gè)字符都被一系列“點(diǎn)”和“破折號(hào)”代替,或者有時(shí)只是單數(shù)的“點(diǎn)”或“破折號(hào)”,反之亦然。

加密

  • 在加密的情況下,我們一次一個(gè)地從單詞中提取每個(gè)字符(如果不是空格),并將其與存儲(chǔ)在我們選擇的任何數(shù)據(jù)結(jié)構(gòu)中的相應(yīng)摩斯密碼匹配(如果您使用 python 編碼,字典可以變成在這種情況下非常有用)
  • 將摩斯密碼存儲(chǔ)在一個(gè)變量中,該變量將包含我們編碼的字符串,然后我們?cè)诎Y(jié)果的字符串中添加一個(gè)空格。
  • 在用摩斯密碼編碼時(shí),我們需要在每個(gè)字符之間添加 1 個(gè)空格,在每個(gè)單詞之間添加 2 個(gè)連續(xù)空格。
  • 如果字符是空格,則向包含結(jié)果的變量添加另一個(gè)空格。我們重復(fù)這個(gè)過程,直到我們遍歷整個(gè)字符串

解密

  • 在解密的情況下,我們首先在要解碼的字符串末尾添加一個(gè)空格(這將在后面解釋)。
  • 現(xiàn)在我們繼續(xù)從字符串中提取字符,直到我們沒有任何空間。
  • 一旦我們得到一個(gè)空格,我們就會(huì)在提取的字符序列(或我們的莫爾斯電碼)中查找相應(yīng)的英語字符,并將其添加到將存儲(chǔ)結(jié)果的變量中。
  • 請(qǐng)記住,跟蹤空間是此解密過程中最重要的部分。一旦我們得到 2 個(gè)連續(xù)的空格,我們就會(huì)向包含解碼字符串的變量添加另一個(gè)空格。
  • 字符串末尾的最后一個(gè)空格將幫助我們識(shí)別莫爾斯電碼字符的最后一個(gè)序列(因?yàn)榭崭癯洚?dāng)提取字符并開始解碼它們的檢查)。

執(zhí)行

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

摩斯密碼對(duì)照表

實(shí)現(xiàn)代碼

# 實(shí)現(xiàn)摩斯密碼翻譯器的 Python 程序
  
'''
VARIABLE KEY
'cipher' -> '存儲(chǔ)英文字符串的摩斯翻譯形式'
'decipher' -> '存儲(chǔ)摩斯字符串的英文翻譯形式'
'citext' -> '存儲(chǔ)單個(gè)字符的摩斯密碼'
'i' -> '計(jì)算摩斯字符之間的空格'
'message' -> '存儲(chǔ)要編碼或解碼的字符串
'''
  
# 表示摩斯密碼圖的字典
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':'-----', ', ':'--..--', '.':'.-.-.-',
                    '?':'..--..', '/':'-..-.', '-':'-....-',
                    '(':'-.--.', ')':'-.--.-'}
  
# 根據(jù)摩斯密碼圖對(duì)字符串進(jìn)行加密的函數(shù)
def encrypt(message):
    cipher = ''
    for letter in message:
        if letter != ' ':
  
            # 查字典并添加對(duì)應(yīng)的摩斯密碼
            # 用空格分隔不同字符的摩斯密碼
            cipher += MORSE_CODE_DICT[letter] + ' '
        else:
            # 1個(gè)空格表示不同的字符
            # 2表示不同的詞
            cipher += ' '
  
    return cipher
  
# 將字符串從摩斯解密為英文的函數(shù)
def decrypt(message):
  
    # 在末尾添加額外空間以訪問最后一個(gè)摩斯密碼
    message += ' '
  
    decipher = ''
    citext = ''
    for letter in message:
  
        # 檢查空間
        if (letter != ' '):
  
            # 計(jì)數(shù)器來跟蹤空間
            i = 0
  
            # 在空格的情況下
            citext += letter
  
        # 在空間的情況下
        else:
            # 如果 i = 1 表示一個(gè)新字符
            i += 1
  
            # 如果 i = 2 表示一個(gè)新詞
            if i == 2 :
  
                 # 添加空格來分隔單詞
                decipher += ' '
            else:
  
                # 使用它們的值訪問密鑰(加密的反向)
                decipher += list(MORSE_CODE_DICT.keys())[list(MORSE_CODE_DICT
                .values()).index(citext)]
                citext = ''
  
    return decipher
  
# 硬編碼驅(qū)動(dòng)函數(shù)來運(yùn)行程序
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)
   
# 執(zhí)行主函數(shù)
if __name__ == '__main__':
    main()

結(jié)果?

.--- ..- . .--- .. -. -....- .... .- .. -.-- --- -. --.

JUEJIN-HAIYONG

..? .-.. --- ...- .? -.-- --- ..-

I LOVE YOU

以上就是Python制作摩斯密碼翻譯器的詳細(xì)內(nèi)容,更多關(guān)于Python 摩斯密碼翻譯的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Flask response響應(yīng)的具體使用

    Flask response響應(yīng)的具體使用

    在flask中,想要給前端頁面返回?cái)?shù)據(jù),必須是Response的對(duì)象,本文介紹了Flask response響應(yīng)的使用,感興趣的可以了解一下
    2021-07-07
  • python爬蟲數(shù)據(jù)保存到mongoDB的實(shí)例方法

    python爬蟲數(shù)據(jù)保存到mongoDB的實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python爬蟲數(shù)據(jù)保存到mongoDB的實(shí)例方法,有需要的朋友們可以參考下。
    2020-07-07
  • python冒泡排序簡單實(shí)現(xiàn)方法

    python冒泡排序簡單實(shí)現(xiàn)方法

    這篇文章主要介紹了python冒泡排序簡單實(shí)現(xiàn)方法,實(shí)例分析了Python冒泡排序的簡單實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • python ElementTree 基本讀操作示例

    python ElementTree 基本讀操作示例

    python ElementTree 基本讀操作示例
    2009-04-04
  • Python有關(guān)Unicode UTF-8 GBK編碼問題詳解

    Python有關(guān)Unicode UTF-8 GBK編碼問題詳解

    本文主要介紹了Python有關(guān)Unicode UTF-8 GBK編碼問題詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Opencv Python實(shí)現(xiàn)兩幅圖像匹配

    Opencv Python實(shí)現(xiàn)兩幅圖像匹配

    這篇文章主要為大家詳細(xì)介紹了Opencv Python實(shí)現(xiàn)兩幅圖像匹配,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Numpy中np.random.rand()和np.random.randn() 用法和區(qū)別詳解

    Numpy中np.random.rand()和np.random.randn() 用法和區(qū)別詳解

    這篇文章主要介紹了Numpy中np.random.rand()和np.random.randn() 用法和區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 使用python?itertools實(shí)現(xiàn)計(jì)算雙十一滿減湊單

    使用python?itertools實(shí)現(xiàn)計(jì)算雙十一滿減湊單

    一年一度的雙十一又到了,在這樣一個(gè)日子中,可能遇到一些問題,首先是“湊單”問題,本文將使用python中的itertools庫解決這一問題,感興趣的可以了解下
    2024-11-11
  • Python大數(shù)據(jù)之從網(wǎng)頁上爬取數(shù)據(jù)的方法詳解

    Python大數(shù)據(jù)之從網(wǎng)頁上爬取數(shù)據(jù)的方法詳解

    這篇文章主要介紹了Python大數(shù)據(jù)之從網(wǎng)頁上爬取數(shù)據(jù)的方法,結(jié)合實(shí)例形式詳細(xì)分析了Python爬蟲爬取網(wǎng)頁數(shù)據(jù)的相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • Python列表切片常用操作實(shí)例解析

    Python列表切片常用操作實(shí)例解析

    這篇文章主要介紹了Python列表切片常用操作實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

东安县| 商城县| 仁布县| 阿巴嘎旗| 滕州市| 伊川县| 东光县| 庆云县| 刚察县| 伊川县| 应用必备| 本溪市| 东光县| 平舆县| 武义县| 方正县| 伊宁县| 绥中县| 定日县| 高青县| 汝城县| 天津市| 阜南县| 文水县| 湘乡市| 宜川县| 通河县| 汪清县| 华容县| 潼关县| 张家川| 莱州市| 巴彦淖尔市| 若羌县| 徐水县| 中阳县| 固阳县| 丽江市| 石河子市| 杨浦区| 依安县|