本关任务:编写程序,将英文句子转换成摩尔斯电码的小程序。
相关知识
摩斯密码
摩斯密码(又译为摩尔斯电码,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)) # 调用函数,并输出返回值