python pta 7-29 Morse译码

在有线电话、无线语音通信技术普及前,军事和民用通信主要依赖于电报。发报方将文字按莫尔斯电码进行编码后发出,收报方则通过反向解码得到原始报文。

摩尔斯电码是一种时通时断的信号代码,它通过短音和长音的不同的排列组合来表达不同的英文字母、数字和标点符号。其中,短音以“・”标记,读作滴(Di);长音以“—”标记,读作“嗒”(Da)。如果滴音的时长为t,则嗒音的时长为3t,字符间的停顿时长为3t,词间的停顿时长则为7t。

1.png

2.png

输入格式:

编码好的Morse电文

说明:用/表示字符间隔,用//表示单词间隔

输出格式:

明文字符串

输入样例:

在这里给出一组输入。例如:

--/---/.-./..././/-.-./---/-../.

输出样例:

在这里给出相应的输出。例如:

morse code

Morse编码字典,可复制使用

morse = {
    # Letters
    "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": "--..",
    # Numbers
    "0": "-----","1": ".----","2": "..---","3": "...--","4": "....-",
    "5": ".....","6": "-....","7": "--...","8": "---..","9": "----.",
    # Punctuation
    "&": ".-...","'": ".----.","@": ".--.-.",")": "-.--.-","(": "-.--.",
    ":": "---...",",": "--..--","=": "-...-","!": "-.-.--",".": ".-.-.-",
    "-": "-....-","+": ".-.-.",'"': ".-..-.","?": "..--..","/": "-..-.",
}
morse = {
    # Letters
    "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": "--..",
    # Numbers
    "0": "-----","1": ".----","2": "..---","3": "...--","4": "....-",
    "5": ".....","6": "-....","7": "--...","8": "---..","9": "----.",
    # Punctuation
    "&": ".-...","'": ".----.","@": ".--.-.",")": "-.--.-","(": "-.--.",
    ":": "---...",",": "--..--","=": "-...-","!": "-.-.--",".": ".-.-.-",
    "-": "-....-","+": ".-.-.",'"': ".-..-.","?": "..--..","/": "-..-.",
}
morse_reverse={v:k for k,v in morse.items()}
def morse(text):
    words=text.split('//')
    decoded_text=[]
    for word in words:
        chars=word.split('/')
        decoded_chars=[morse_reverse.get(char,'?') for char in chars]
        decoded_text.append(''.join(decoded_chars))
    return ' '.join(decoded_text)
s=input()
print(morse(s))

  • 25
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RT-Thread是一种实时操作系统,可用于嵌入式设备。而Morse码是一种用于发送和接收电码的通信方法。 在RT-Thread中进行Morse码测试,可以将Morse码用作通信媒介来测试系统的实时性和稳定性。这种测试方法可以利用RT-Thread的线程和定时器功能来模拟发送和接收Morse码的过程。 首先,我们需要创建一个用于发送Morse码的线程。该线程可以定期发送不同的Morse码信号,通过控制输出电平的方法来模拟点(.)和划(-)的信号。我们可以利用GPIO接口来控制输出电平。 然后,我们还需要创建一个用于接收Morse码的线程。该线程可以通过另一个GPIO接口来检测输入电平的变化。当接收到一个电平变化后,线程将根据时间间隔来确定是点还是划,并通过串口或其他方式将结果输出。 在测试过程中,我们可以改变发送和接收Morse码的频率,来验证系统的实时性和响应能力。我们可以通过调整线程的优先级和定时器的时间间隔,来模拟不同的实时要求。 通过这种Morse码测试方法,我们可以验证RT-Thread对于实时性要求的满足程度,通过观察发送和接收的Morse码是否准确和及时。如果Morse码发送和接收存在延迟或错误,可能意味着系统的实时性不足或操作系统的性能出现问题。 综上所述,RT-Thread可以通过Morse码测试来评估系统的实时性和稳定性,以及操作系统的性能表现。这种测试方法可以帮助开发人员找出系统存在的问题,并进行相应的调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值