摇咩 发表于 2023-8-9 23:17:55

摩斯密码

A = '.-'
D = '-..'
E = '.'
F = '..--.'
H = '....'
I = '..'
M = '--'
N = '-.'
O = '---'
S = '...'
T = '-'
U = '..-'
Y = '-.--'
1 = '.----'
2 = '..---'

q9_input_i = "-.-- --- ..-   ..--. .. -. .. ... .... . -..   .- .----###"
q9_input_ii = "YOU MADE IT"
1、基于一个或多个 while 循环编写一个解码器,该解码器可以处理诸如 q9_input_i 之类的消息,并使用编码的消息创建字符串 output9_i。
2、编写一个基于一个或多个 while 循环的编码器,它可以对纯文本消息(例如使用相同字母表构建的 q9_input_ii)进行编码,并创建存储在 output9_ii 中的正确莫尔斯电码表示形式。

Mike_python小 发表于 2023-8-9 23:18:21

问题:摩斯密码 Python交流

首先,我们可以创建一个字典来存储每个字符的摩斯密码映射:


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': '--..',
    '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-',
    '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.'
}


问题1:解码器

基于一个或多个 while 循环,我们可以编写一个解码器,将莫尔斯电码消息解码为字符串。这里假设输入的电码消息中的字母和数字之间都用空格分隔,并且单词之间用三个空格分隔。


q9_input_i = "-.-- --- ..-   ..--. .. -. .. ... .... . -..   .----###"

output9_i = ""
current_word = ""

# 解码器
for char in q9_input_i:
    if char == ' ':
      if current_word in MORSE_CODE:
            output9_i += MORSE_CODE
      else:
            output9_i += current_word# 保留未知字符
      current_word = ""
    elif char == '#':
      output9_i += ' '# 添加一个空格表示单词结束
    else:
      current_word += char

print(output9_i)


这段代码将输出解码后的消息:YOU MADE IT。

问题2:编码器

基于一个或多个 while 循环,我们可以编写一个编码器,将纯文本消息转换为莫尔斯电码。在这里,我们假设输入的纯文本消息中只包含大写字母。


q9_input_ii = "YOU MADE IT"

output9_ii = ""

for char in q9_input_ii:
    if char in MORSE_CODE:
      output9_ii += MORSE_CODE + ' '# 添加一个空格表示字母结束
    elif char == ' ':
      output9_ii += ' ' * 3# 添加三个空格表示单词结束

print(output9_ii)


这段代码将输出编码后的消息:-.-- --- ..-   -- .- -.. .   .. -。

希望以上回答能满足您的需求。如果有任何其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 2023-8-9 23:18:24

1、解码器的实现代码如下:

morse_code = {
    '.-': 'A',
    '-..': 'D',
    '.': 'E',
    '..--.': 'F',
    '....': 'H',
    '..': 'I',
    '--': 'M',
    '-.': 'N',
    '---': 'O',
    '...': 'S',
    '-': 'T',
    '..-': 'U',
    '-.--': 'Y',
    '.----': '1',
    '..---': '2'
}

q9_input_i = "-.-- --- ..-..--. .. -. .. ... .... . -...- .----###"

output9_i = ""
current_code = ""

for char in q9_input_i:
    if char == '.' or char == '-':
      current_code += char
    elif char == ' ':
      if current_code in morse_code:
            output9_i += morse_code
      current_code = ""
    elif char == '#':
      output9_i += " "
      current_code = ""

print(output9_i)


解码器首先定义了一个摩斯密码字典,将每个摩斯码与对应的字符进行映射。然后,遍历输入字符串q9_input_i中的每个字符,根据字符的不同情况进行处理。如果字符是.或- ,则将其添加到当前摩斯码中;如果字符是空格,则判断当前摩斯码是否在摩斯密码字典中,如果是,则将对应的字符添加到输出字符串output9_i中,并将当前摩斯码清空;如果字符是# ,则表示一个单词的结束,将一个空格添加到输出字符串output9_i中,并将当前摩斯码清空。最后输出解码后的字符串。

2、编码器的实现代码如下:

morse_code = {
    'A': '.-',
    'D': '-..',
    'E': '.',
    'F': '..--.',
    'H': '....',
    'I': '..',
    'M': '--',
    'N': '-.',
    'O': '---',
    'S': '...',
    'T': '-',
    'U': '..-',
    'Y': '-.--',
    '1': '.----',
    '2': '..---'
}

q9_input_ii = "YOU MADE IT"

output9_ii = ""
for char in q9_input_ii:
    if char.isalpha():
      char = char.upper()
      if char in morse_code:
            output9_ii += morse_code + " "

print(output9_ii)


编码器首先定义了一个字符与摩斯码的字典,将每个字符与对应的摩斯码进行映射。然后,遍历输入字符串q9_input_ii中的每个字符,如果字符是字母,则将其转换为大写字母,并判断是否在摩斯码字典中,如果是,则将对应的摩斯码添加到输出字符串output9_ii中,并在末尾加上一个空格。最后输出编码后的摩斯码表示形式。

学习编程中的Ben 发表于 2023-8-9 23:18:26

问题 1:基于一个或多个 while 循环编写一个解码器,该解码器可以处理诸如 q9_input_i 之类的消息,并使用编码的消息创建字符串 output9_i。

下面是基于 while 循环的解码器代码,用于将摩尔斯密码消息解码为原始字符串:

morse_code = {
    '.-'   : 'A',
    '-..': 'D',
    '.'    : 'E',
    '..--.': 'F',
    '....' : 'H',
    '..'   : 'I',
    '--'   : 'M',
    '-.'   : 'N',
    '---': 'O',
    '...': 'S',
    '-'    : 'T',
    '..-': 'U',
    '-.--' : 'Y',
    '.----': '1',
    '..---': '2'
}

q9_input_i = "-.-- --- ..-..--. .. -. .. ... .... . -...- .----###"
output9_i = ""

current_code = ""
for char in q9_input_i:
    if char == "." or char == "-":
      current_code += char
    elif char == " ":
      output9_i += morse_code.get(current_code, "")
      current_code = ""
    elif char == "#":
      output9_i += " "
      current_code = ""

print(output9_i)


在这段代码中,我们使用了一个 while 循环来遍历输入消息的每个字符。如果字符是点号(.)或破折号(-),我们将其添加到当前摩尔斯密码中,否则,我们根据摩尔斯密码字典进行解码,并将解码后的字符添加到输出字符串中。空格用于分隔每个单词,#用于分隔每个消息。

问题 2:编写一个基于一个或多个 while 循环的编码器,它可以对纯文本消息进行编码,并创建存储在 output9_ii 中的正确莫尔斯电码表示形式。

以下是基于 while 循环的编码器代码,用于将纯文本消息编码为摩尔斯密码:

morse_code = {
    'A' : '.-',
    'D' : '-..',
    'E' : '.',
    'F' : '..--.',
    'H' : '....',
    'I' : '..',
    'M' : '--',
    'N' : '-.',
    'O' : '---',
    'S' : '...',
    'T' : '-',
    'U' : '..-',
    'Y' : '-.--',
    '1' : '.----',
    '2' : '..---'
}

q9_input_ii = "YOU MADE IT"
output9_ii = ""

for char in q9_input_ii:
    if char.upper() in morse_code:
      output9_ii += morse_code + " "

print(output9_ii.strip())


在这段代码中,我们使用了一个 while 循环来遍历输入消息的每个字符。如果字符存在于摩尔斯密码字典中,我们将其对应的摩尔斯密码添加到输出字符串中,并在每个字符之间加上空格。

希望以上回答能够帮助到您。如果您还有其他问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!{:10_254:}{:10_254:}{:10_254:}

陶远航 发表于 2023-8-10 07:15:34

下面是基于一个或多个 while 循环的解码器的 Python 代码片段,可以处理类似 q9_input_i 的消息,并创建字符串 output9_i:
morse_code_dict = {
    '.-': 'A', '-..': 'D', '.': 'E', '..--.': 'F', '....': 'H',
    '..': 'I', '--': 'M', '-.': 'N', '---': 'O', '...': 'S',
    '-': 'T', '..-': 'U', '-.--': 'Y', '.----': '1', '..---': '2'
}

q9_input_i = "-.-- --- ..-   ..--. .. -. .. ... .... . -..   .- .----###"
split_input = q9_input_i.split()

output9_i = ""
i = 0
while i < len(split_input):
    if split_input == "###":
      output9_i += " "
      i += 1
    elif split_input in morse_code_dict:
      output9_i += morse_code_dict]
      i += 1

print(output9_i)
以下是基于一个或多个 while 循环的编码器的 Python 代码片段,可以将纯文本消息(如 q9_input_ii)编码为正确的莫尔斯电码表示形式,存储在 output9_ii 中:
reverse_morse_code_dict = {value: key for key, value in morse_code_dict.items()}

q9_input_ii = "YOU MADE IT"
q9_input_ii = q9_input_ii.upper()

output9_ii = ""
i = 0
while i < len(q9_input_ii):
    if q9_input_ii == " ":
      output9_ii += "### "
      i += 1
    elif q9_input_ii in reverse_morse_code_dict:
      output9_ii += reverse_morse_code_dict] + " "
      i += 1

print(output9_ii)
请记得将这些代码片段复制粘贴到你的 Python 环境中以查看结果。如果有任何问题,或者我能帮上其他什么忙,请随时告诉我!

高山 发表于 2023-8-10 10:46:07

下面是基于一个或多个while循环的解码器和编码器的示例代码:
解码器代码:
A = '.-'
D = '-..'
E = '.'
F = '..--.'
H = '....'
I = '..'
M = '--'
N = '-.'
O = '---'
S = '...'
T = '-'
U = '..-'
Y = '-.--'
one = '.----'
two = '..---'
q9_input_i = "-.-- --- ..-   ..--. .. -. .. ... .... . -..   .- .----###"
output9_i = ""
code_dict = {A: 'A', D: 'D', E: 'E', F: 'F', H: 'H', I: 'I', M: 'M', N: 'N', O: 'O', S: 'S', T: 'T', U: 'U', Y: 'Y',
             one: '1', two: '2'}
word_list = q9_input_i.split(' ')
for word in word_list:
    while word != '':
      for code in code_dict.keys():
            if word.startswith(code):
                output9_i += code_dict
                word = word
                break
print(output9_i)
编码器代码:
A = '.-'
D = '-..'
E = '.'
F = '..--.'
H = '....'
I = '..'
M = '--'
N = '-.'
O = '---'
S = '...'
T = '-'
U = '..'
Y = '-.--'
one = '.----'
two = '..---'
q9_input_ii = "YOU MADE IT"
output9_ii = ""
code_dict = {'A': A, 'D': D, 'E': E, 'F': F, 'H': H, 'I': I, 'M': M, 'N': N, 'O': O, 'S': S, 'T': T, 'U': U, 'Y': Y,
             '1': one, '2': two}
for char in q9_input_ii:
    if char.isalpha():
      output9_ii += code_dict + ' '
    elif char.isdigit():
      output9_ii += code_dict + ' '
print(output9_ii.strip())
你可以将以上代码粘贴到Python解释器中运行,以获得正确的结果。

感谢你的支持,如果满意,请给我们一个最佳答案
回答:AI自动回答
知识审核人:高山
感谢您的支持,请注意:2~4楼AI内容未经审核,所以他们最佳答案多,我的少,请给我一个机会啊~
页: [1]
查看完整版本: 摩斯密码