鱼C论坛

 找回密码
 立即注册
查看: 2692|回复: 2

[已解决]关于字典摩斯代码有几处不理解希望大佬指点指点

[复制链接]
发表于 2022-11-10 16:33:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
# 摩斯密文表
c_table = [".-", "-...", "-.-.", "-..", ".", "..-.",
           "--.", "....", "..", ".---", "-.-", ".-..",
           "--", "-.", "---", ".--.", "--.-", ".-.",
           "...", "-", "..-", "...-", ".--", "-..-",
           "-.--", "--..", ".----", "..---", "...--", "....-",
           ".....", "-....", "--...", "---..", "----.", "-----"]
# 摩斯明文表
d_table = ["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", "1", "2", "3", "4",
           "5", "6", "7", "8", "9", "0"]
   
code = input("请输入摩斯密码:")
split_code = code.split(" ") 这一行代码什么意思,可不可以去掉
result = [d_table[c_table.index(each)] for each in split_code]  这里为什么遍历的是split_codesplit_code
print(result)
最佳答案
2022-11-10 16:43:19
本帖最后由 jackz007 于 2022-11-10 16:58 编辑
  1. # 摩斯密文表
  2. c_table = [".-", "-...", "-.-.", "-..", ".", "..-.",
  3.            "--.", "....", "..", ".---", "-.-", ".-..",
  4.            "--", "-.", "---", ".--.", "--.-", ".-.",
  5.            "...", "-", "..-", "...-", ".--", "-..-",
  6.            "-.--", "--..", ".----", "..---", "...--", "....-",
  7.            ".....", "-....", "--...", "---..", "----.", "-----"]
  8. # 摩斯明文表
  9. d_table = ["A", "B", "C", "D", "E", "F",
  10.            "G", "H", "I", "J", "K", "L",
  11.            "M", "N", "O", "P", "Q", "R",
  12.            "S", "T", "U", "V", "W", "X",
  13.            "Y", "Z", "1", "2", "3", "4",
  14.            "5", "6", "7", "8", "9", "0"]
  15.    
  16. code = input("请输入摩斯密码:")
  17. split_code = code . split(" ")     # 你输入的莫尔斯密码是靠空格进行分割的,这一句的目的就是把键入的莫尔斯密码按空格切分成多个独立的编码单元构成的列表,
  18.                                    # 比如,如果键入了 "... --- ..." 就会被切分成 ['...' , '---' , '...'],这样,后面就可以通过遍历列表的每一个元素,为密文匹配到对应的明文字符。
  19. result = [d_table[c_table.index(each)] for each in split_code]     # 为什么遍历就不用再做解释了吧
  20. print(result)
复制代码

           如果把密文表和明文表组合成字典(Key 是密文,Value 是明文)操作就可以稍微简单一些
  1. # 摩斯密文表
  2. c_table = [".-", "-...", "-.-.", "-..", ".", "..-.",
  3.            "--.", "....", "..", ".---", "-.-", ".-..",
  4.            "--", "-.", "---", ".--.", "--.-", ".-.",
  5.            "...", "-", "..-", "...-", ".--", "-..-",
  6.            "-.--", "--..", ".----", "..---", "...--", "....-",
  7.            ".....", "-....", "--...", "---..", "----.", "-----"]
  8. # 摩斯明文表
  9. d_table = ["A", "B", "C", "D", "E", "F",
  10.            "G", "H", "I", "J", "K", "L",
  11.            "M", "N", "O", "P", "Q", "R",
  12.            "S", "T", "U", "V", "W", "X",
  13.            "Y", "Z", "1", "2", "3", "4",
  14.            "5", "6", "7", "8", "9", "0"]
  15. e = dict(zip(c_table , d_table))   
  16. code = input("请输入摩斯密码:")
  17. txt = '' . join([e[x] for x in code . split()])
  18. print(txt)
复制代码

        运行实况:
  1. D:\[00.Exerciese.2022]\Python>x
  2. 请输入摩斯密码:... --- ... .---- ..--- ...--
  3. SOS123

  4. D:\[00.Exerciese.2022]\Python>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-11-10 16:43:19 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-11-10 16:58 编辑
  1. # 摩斯密文表
  2. c_table = [".-", "-...", "-.-.", "-..", ".", "..-.",
  3.            "--.", "....", "..", ".---", "-.-", ".-..",
  4.            "--", "-.", "---", ".--.", "--.-", ".-.",
  5.            "...", "-", "..-", "...-", ".--", "-..-",
  6.            "-.--", "--..", ".----", "..---", "...--", "....-",
  7.            ".....", "-....", "--...", "---..", "----.", "-----"]
  8. # 摩斯明文表
  9. d_table = ["A", "B", "C", "D", "E", "F",
  10.            "G", "H", "I", "J", "K", "L",
  11.            "M", "N", "O", "P", "Q", "R",
  12.            "S", "T", "U", "V", "W", "X",
  13.            "Y", "Z", "1", "2", "3", "4",
  14.            "5", "6", "7", "8", "9", "0"]
  15.    
  16. code = input("请输入摩斯密码:")
  17. split_code = code . split(" ")     # 你输入的莫尔斯密码是靠空格进行分割的,这一句的目的就是把键入的莫尔斯密码按空格切分成多个独立的编码单元构成的列表,
  18.                                    # 比如,如果键入了 "... --- ..." 就会被切分成 ['...' , '---' , '...'],这样,后面就可以通过遍历列表的每一个元素,为密文匹配到对应的明文字符。
  19. result = [d_table[c_table.index(each)] for each in split_code]     # 为什么遍历就不用再做解释了吧
  20. print(result)
复制代码

           如果把密文表和明文表组合成字典(Key 是密文,Value 是明文)操作就可以稍微简单一些
  1. # 摩斯密文表
  2. c_table = [".-", "-...", "-.-.", "-..", ".", "..-.",
  3.            "--.", "....", "..", ".---", "-.-", ".-..",
  4.            "--", "-.", "---", ".--.", "--.-", ".-.",
  5.            "...", "-", "..-", "...-", ".--", "-..-",
  6.            "-.--", "--..", ".----", "..---", "...--", "....-",
  7.            ".....", "-....", "--...", "---..", "----.", "-----"]
  8. # 摩斯明文表
  9. d_table = ["A", "B", "C", "D", "E", "F",
  10.            "G", "H", "I", "J", "K", "L",
  11.            "M", "N", "O", "P", "Q", "R",
  12.            "S", "T", "U", "V", "W", "X",
  13.            "Y", "Z", "1", "2", "3", "4",
  14.            "5", "6", "7", "8", "9", "0"]
  15. e = dict(zip(c_table , d_table))   
  16. code = input("请输入摩斯密码:")
  17. txt = '' . join([e[x] for x in code . split()])
  18. print(txt)
复制代码

        运行实况:
  1. D:\[00.Exerciese.2022]\Python>x
  2. 请输入摩斯密码:... --- ... .---- ..--- ...--
  3. SOS123

  4. D:\[00.Exerciese.2022]\Python>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-10 21:46:19 From FishC Mobile | 显示全部楼层
spilt_code=code.spilt会分割输入的密文
然后遍历这个被分割的字符串 再用遍历到的字符串找到密文序列 用密文序列找出对应的字符
再打印出找到的字符
这样理解没错吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-12 23:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表