debugging 调试将莫尔斯电码转换为英语的函数时遇到问题

0s0u357o  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(120)

在一些课堂作业中遇到了麻烦,我似乎无法让函数返回正确的单词。
我期待着得到“你好!”但我一直得到“eeeeeeeeeeeeee!"。
这是他们提供的提示:
问题是莫尔斯符号的翻译顺序不对。
例如,表示“e”的“.”在表示“h”的"....“之前翻译。
因此,'....'不是翻译成'h',而是翻译成'eeee'。
因此,要修复翻译器,首先需要翻译所有4字符符号,然后是所有3字符符号,然后是所有2字符符号,最后是两个1字符符号“.”和“-”。
分隔符应在结尾处完成-第一个'||'应替换为一个白色' ',然后替换为单个分隔符'|',并将其与空文本字符串' '匹配。

def morse2txt(t):
    """Translates Morse code to text"""
    
    t = t.replace(".-", 'a')
    t = t.replace("-...", 'b')
    t = t.replace("-.-.", 'c')
    t = t.replace("-..", 'd')
    t = t.replace(".", 'e')
    t = t.replace("..-.", 'f')
    t = t.replace("--.", 'g')
    t = t.replace("....", 'h')
    t = t.replace("..", 'i')
    t = t.replace(".---", 'j')
    t = t.replace("-.-", 'k')
    t = t.replace(".-..", 'l')
    t = t.replace("--", 'm')
    t = t.replace("-.", 'n')
    t = t.replace("---", 'o')
    t = t.replace(".--.", 'p')
    t = t.replace("--.-", 'q')
    t = t.replace(".-.", 'r')
    t = t.replace("...", 's')
    t = t.replace("-", 't')
    t = t.replace("..-", 'u')
    t = t.replace("...-", 'v')
    t = t.replace(".--", 'w')
    t = t.replace("-..-", 'x')
    t = t.replace("-.--", 'y')
    t = t.replace("--..", 'z')
    t = t.replace("||", ' ')
    t = t.replace("|", '')
    
    return t

# Main program 

morse = "....|..||-|....|.|.-.|.|!"
txt=morse2txt(morse)
print(txt)
bbmckpt7

bbmckpt71#

你需要按照提示说的去做:
因此,要修复翻译器,首先需要翻译所有4字符符号,然后是所有3字符符号,然后是所有2字符符号,最后是两个1字符符号“.”和“-”。
因此,它看起来像这样:

def morse2txt(t):
    #First, translate the 4-character symbols
    t = t.replace("-...", 'b')
    t = t.replace("-.-.", 'c')
    t = t.replace("-..", 'd')
    t = t.replace("..-.", 'f')
    t = t.replace("....", 'h')
    t = t.replace(".---", 'j')
    t = t.replace(".-..", 'l')
    t = t.replace(".--.", 'p')
    t = t.replace("--.-", 'q')
    t = t.replace("...-", 'v')
    t = t.replace("-..-", 'x')
    t = t.replace("-.--", 'y')
    t = t.replace("--..", 'z')

    #Next, translate the 3-character symbols
    t = t.replace("-.-", 'k')
    t = t.replace("---", 'o')
    t = t.replace(".-.", 'r')
    t = t.replace("...", 's')
    t = t.replace("..-", 'u')
    t = t.replace(".--", 'w')

    #Then, translate the 2-character symbols
    t = t.replace(".-", 'a')
    t = t.replace("-.", 'n')
    t = t.replace("--.", 'g')
    t = t.replace("..", 'i')
    t = t.replace("--", 'm')

    #After that, translate the 1-character symbols
    t = t.replace("-", 't')
    t = t.replace(".", 'e')

    #Finally, translate the delimiters
    t = t.replace("||", ' ')
    t = t.replace("|", '')

    return t

morse = "....|..||-|....|.|.-.|.|!"

txt = morse2txt(morse)

print(txt)

首先翻译4个字符的符号(如-...),然后翻译3个字符的符号(如-.-),然后翻译2个字符的符号(如.-),然后翻译1个字符的符号(-和.),最后翻译分隔符(||和|)。如果你不这样做,而是在任何其他符号之前做1个字符的符号,它们会破坏它们。例如,在你尝试的4个e取代了一个h,因为e是.而h是....,如果你先做e,它会产生4个e而不是一个h。如果你在3个符号或4个符号之前做2个符号,也会发生同样的问题。或4符号之前的3符号。

相关问题