描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
摩斯密码(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. morse = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---",
  2. ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
  3. digit = ['-----', '.----','..---', '...--', '....-', '.....', '-....', '--...', '---..', '----.']
  4. punctuation = {'.': '.-.-.-', ':': '---...', ',': '--..--', ';': '-.-.-.', '?': '..- -..', '=': '-...-',
  5. "'": '.----.', '/': '-..-.', '!': '-.-.--', '-': '-....-', '_': '..--.-', '"': '.-..-.',
  6. '(': '-.--.', ')': '-.--.-', '$': '...-..-', '&': '·-···', '@': '.--.-.', ' ': ''}
  1. 编写程序:
  1. 将输入的英文句子转换成摩尔斯电码并输出,除字母、数字和符号外的空格原样输出,每个摩斯码之间及与符号之间用一个空格分隔。
  2. 将输入的一组用空格分隔的摩斯电码密文,对其进行解码输出,字母输出为小写,标点符号原样输出。

例如 :

  1. Python is a programming language that lets you work more quickly and integrate your systems more effectively.
  2. .--. -.-- - .... --- -. .. ... .- .--. .-. --- --. .-. .- -- -- .. -. --. .-.. .- -. --. ..- .- --. . - .... .- - .-.. . - ... -.-- --- ..- .-- --- .-. -.- -- --- .-. . --.- ..- .. -.-. -.- .-.. -.-- .- -. -.. .. -. - . --. .-. .- - . -.-- --- ..- .-. ... -.-- ... - . -- ... -- --- .-. . . ..-. ..-. . -.-. - .. ...- . .-.. -.-- .-.-.-
  1. .--. -.-- - .... --- -. .. ... .- .--. .-. --- --. .-. .- -- -- .. -. --. .-.. .- -. --. ..- .- --. . - .... .- - .-.. . - ... -.-- --- ..- .-- --- .-. -.- -- --- .-. . --.- ..- .. -.-. -.- .-.. -.-- .- -. -.. .. -. - . --. .-. .- - . -.-- --- ..- .-. ... -.-- ... - . -- ... -- --- .-. . . ..-. ..-. . -.-. - .. ...- . .-.. -.-- .-.-.-
  2. python is a programming language that lets you work more quickly and integrate your systems more effectively.

解法一:

  1. 以小写字母为键,以摩斯码为值构建字典
  2. 遍历转为小写的输入的字符串
    1. 若当前字符在字典的键中存在,返回键对应的值
    2. 否则原样输出该字符 ```python import string

morse = [“.-“, “-…”, “-.-.”, “-..”, “.”, “..-.”, “—.”, “….”, “..”, “.—-“, “-.-“, “.-..”, “—“, “-.”, “—-“, “.—.”, “—.-“, “.-.”, “…”, “-“, “..-“, “…-“, “.—“, “-..-“, “-.—“, “—..”] morse_dic = dict(zip(string.ascii_lowercase, morse)) # 以小写字母为键,摩斯码为值构建字典 txt = input().lower() # 输入转小写 for c in txt: # 遍历输入的字符串 print(morse_dic.get(c, c), end=’’) # 索引字典中当前字符为键的值,键中不存在时直接输出原字符,不换行

PYTHON must Pass!<br />.--.-.---....----. --..-...- .--..-......!

解法二:

1. 将输入的字符串中的字母转为小写字母
1. 对输入的字符串进行遍历,如果是小写字母就用转换列表中对应序号的元素替换,不是字母的原样不动
   1. 判断是不是小写字母
   1. 找到该 字母的序号
   1. 用替换列表中对应序号的元素替换该字母
3. 返回替换过的字符串

参考代码如下:
```python
def ciphertext(plaintext):
    ls=[".-","-...","-.-.","-..",".","..-.","--.","....",
        "..",".---","-.-",".-..","--","-.","---",".--.",
        "--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]    

    plaintext = plaintext.lower()              # 字符串中所有字母转小写
    letter = 'abcdefghijklmnopqrstuvwxyz'      # 构建小写字母字符串
    for c in plaintext:                        # 对输入的字符串进行遍历
        if c in letter:                        # 用ls中对应序号的元素替换字母
            plaintext = plaintext.replace(c,ls[letter.find(c)]) # letter.find(c)得到c在letter中的序号
    return plaintext                           # 返回替换过的字符串

if __name__ == '__main__':
    plaintext = input()                        # 输入一个字符串
    print(ciphertext(plaintext))               # 调用函数,并输出返回值

可以利用 ord(c) 函数返回字母的 Unicode 码的整数,a-z 的值的范围是97-122,可以对其减97,使其值落入0-25的区间,对应 ls 中各元素的序号,再根据序号进行索引,找到替换的元素。

def ciphertext(plaintext):
    ls=[".-","-...","-.-.","-..",".","..-.","--.","....",
        "..",".---","-.-",".-..","--","-.","---",".--.",
        "--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]

    plaintext = plaintext.lower()                 # 字符串中所有字母转小写
    message = ''
    for c in plaintext:
        if 'a' <= c <= 'z':                       # 判定 c 是不是小写字母
            message =  message + ls[ord(c)-97]    # ord(c) 返回代表它 Unicode 码的整数,减97后落入0-25的区间
        else:
            message =  message + c                # 非小写字母时不做变换,直接拼接原字符
    return message

if __name__ == '__main__':
    plaintext = input()                          # 输入一个字符串
    print(ciphertext(plaintext))                 # 调用函数,并输出返回值

timg (9).jpg