共计 1683 个字符,预计需要花费 5 分钟才能阅读完成。
实现摩斯明码翻译器的 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
# [贝宝](https://www.gendan5.com/wallet/PayPal.html) 在空格的状况下
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
正文完