在一些课堂作业中遇到了麻烦,我似乎无法让函数返回正确的单词。
我期待着得到“你好!”但我一直得到“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)
1条答案
按热度按时间bbmckpt71#
你需要按照提示说的去做:
因此,要修复翻译器,首先需要翻译所有4字符符号,然后是所有3字符符号,然后是所有2字符符号,最后是两个1字符符号“.”和“-”。
因此,它看起来像这样:
首先翻译4个字符的符号(如-...),然后翻译3个字符的符号(如-.-),然后翻译2个字符的符号(如.-),然后翻译1个字符的符号(-和.),最后翻译分隔符(||和|)。如果你不这样做,而是在任何其他符号之前做1个字符的符号,它们会破坏它们。例如,在你尝试的4个e取代了一个h,因为e是.而h是....,如果你先做e,它会产生4个e而不是一个h。如果你在3个符号或4个符号之前做2个符号,也会发生同样的问题。或4符号之前的3符号。