本关任务:编写程序,将英文句子转换成摩尔斯电码的小程序。
相关知识
摩斯密码
摩斯密码(又译为摩尔斯电码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。 摩斯密码表_摩斯密码对照表:
字符电码符号字符电码符号字符电码符号字符电码符号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关 摩斯密码
def morse_code_encryption(txt):
"""接收明文字符串为参数,返回用摩斯密码加密后的字符串。"""
# 补充你的代码
dic = {'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': '--..', ' ': ' '}
num = len(txt)
Morsecode = ''
for i in range(num):
if txt[i] in dic:
Morsecode += str(dic[txt[i]])
return Morsecode
if __name__ == '__main__':
plaintext = input().lower() # 输入一个字符串并转为小写
print(morse_code_encryption(plaintext)) # 调用函数,并输出返回值
第2关 摩斯密码加密器
def morse_code_encryption(txt):
"""接收明文字符串为参数,返回用摩斯密码加密后的字符串。"""
char = 'abcdefghijklmnopqrstuvwxyz' + '0123456789' + '.:,;?=\'/!-_"()$&@' # 可用于加密的字符
morse_letter = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.",
"---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
morse_digit = ['-----', '.----', '..---', '...--', '....-', '.....', '-....', '--...', '---..', '----.']
morse_spec = ['.-.-.-', '---...', '--..--', '-.-.-.', '..- -..', '-...-', '.----.', '-..-.', '-.-.--', '-....-',
'..--.-', '.-..-.', '-.--.', '-.--.-', '...-..-', '·-···', '.--.-.', ''] # '.:,;?=\'/!-_"()$&@'的摩斯码
# 补充你的代码
content = morse_letter + morse_digit + morse_spec
list = []
for i in txt:
if i in char:
list.append(content[char.index(i)])
else:
list.append(i)
return list
if __name__ == '__main__':
plaintext = input().lower() # 输入一个字符串并转为小写
print(*morse_code_encryption(plaintext)) # 调用函数,并输出返回值
第3关 摩斯密码解密
def morse_code_decryption(txt):
"""接收密文字符串为参数,返回用摩斯密码解密后的字符串。"""
char = 'abcdefghijklmnopqrstuvwxyz' + '0123456789' + '.:,;?=\'/!-_"()$&@–'
morse_letter = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.",
"---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
morse_digit = ['-----', '.----', '..---', '...--', '....-', '.....', '-....', '--...', '---..', '----.']
morse_spec = ['.-.-.-', '---...', '--..--', '-.-.-.', '..- -..', '-...-', '.----.', '-..-.', '-.-.--', '-....-',
'..--.-', '.-..-.', '-.--.', '-.--.-', '...-..-', '·-···', '.--.-.', '–','']
# 补充你的代码
content = morse_letter + morse_digit + morse_spec
MORSE_CODE_DICT = dict(zip(char,content))
MORSE_CODE_DICT[''] = ''
txt += ' '
decipher = ''
citext = ''
for letter in txt:
# 检查空间
if letter != ' ':
i = 0
# 在空格的情况下
citext += letter
# 在空间的情况下
else:
# 如果 i = 1 表示一个新字符
i += 1
# 如果 i = 2 表示一个新单词
if i == 2:
# 添加空格来分隔单词
decipher += ' '
else:
# 使用它们的值访问密钥(加密的反向)
# decipher += list(char)[list(content).index(citext)]
decipher += list(MORSE_CODE_DICT.keys())[list(MORSE_CODE_DICT.values()).index(citext)]
citext = ''
return decipher
if __name__ == '__main__':
ciphertext = input() # 输入一个密文
print(morse_code_decryption(ciphertext)) # 调用函数,并输出返回值
|