鱼C论坛

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

[已解决]请求帮助!

[复制链接]
发表于 昨天 12:55 | 显示全部楼层 |阅读模式

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

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

x
  1. x = input("请输入明文:")
  2. y = input("请输入的位数:")

  3. a = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N",
  4.      "O", "P", "Q", "R", "S", "T", "U", "W", "X", "Y", "Z"]
  5. b = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---",
  6.      "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-",
  7.      "..-", "...-", ".--", "-..-", "-.--", "--..", ".----", "..---", "...--",
  8.      "....-", ".....", "-....", "--...", "---..", "----.", "-----"]

  9. x_code = x.split("")

  10. result = []
  11. for e in x_code:
  12.     c = a.index(e)
  13.     result.append(b[c + y])
  14. print(result)
复制代码

感觉有错怎么改
错误:
请输入明文:LLLLLLLL
请输入的位数:2
Traceback (most recent call last):
  File "C:/Users/10690/Desktop/莫斯密码(进化).py", line 11, in <module>
    x_code = x.split("")
ValueError: empty separator
最佳答案
昨天 12:57
您好!看到您的代码有几个问题,我来帮您逐一分析和修复。

首先,主要错误在 x.split("") 这一行。在 Python 中,split() 方法不能使用空字符串作为分隔符,这会导致 ValueError。您可能是想将字符串分割成单个字符,正确的方法是使用 list(x) 或直接遍历字符串。

其次,其他部分代码不完整或逻辑有误:
- 变量 ab 未定义,需要您提供映射列表(例如莫斯密码的字符和对应编码)。
- result 未初始化,应该先设置为空列表。
- 循环中 result.append(b) 可能应该是追加 b[c](即根据索引获取对应编码)。
- 输入 y(位数)未使用,如果您想实现移位或其他功能,需要额外代码。

以下是修复后的代码示例,假设 a 是字符列表,b 是对应的莫斯编码列表,并且忽略 y(位数)的用途(如果您需要用到 y,请补充说明):


  1. # 定义莫斯密码映射(示例,仅部分字符)
  2. a = ['A', 'B', 'C', 'L', 'M', 'N']  # 字符列表
  3. b = ['.-', '-...', '-.-.', '.-..', '--', '-.']  # 对应莫斯编码

  4. x = input("请输入明文:")
  5. y = input("请输入的位数:")  # 目前未使用,您可以根据需要修改代码

  6. x_code = list(x)  # 将字符串转换为字符列表,修复了 split 错误
  7. result = []  # 初始化结果列表

  8. for e in x_code:
  9.     if e in a:  # 检查字符是否在映射中
  10.         c = a.index(e)
  11.         result.append(b[c])  # 追加对应的莫斯编码
  12.     else:
  13.         print(f"警告:字符 '{e}' 不在映射列表中,已跳过。")

  14. print("编码结果:", result)
复制代码


说明:
- 使用 list(x) 替代 x.split("") 来分割字符。
- 添加了检查字符是否在 a 中的逻辑,避免找不到索引的错误。
- 如果您的 y 是用于移位(例如凯撒密码),可以在循环中修改 c 的值,例如 c = (c + int(y)) % len(a)

如果这不是您想要的,请提供更多细节,我会进一步协助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 12:57 | 显示全部楼层    本楼为最佳答案   
您好!看到您的代码有几个问题,我来帮您逐一分析和修复。

首先,主要错误在 x.split("") 这一行。在 Python 中,split() 方法不能使用空字符串作为分隔符,这会导致 ValueError。您可能是想将字符串分割成单个字符,正确的方法是使用 list(x) 或直接遍历字符串。

其次,其他部分代码不完整或逻辑有误:
- 变量 ab 未定义,需要您提供映射列表(例如莫斯密码的字符和对应编码)。
- result 未初始化,应该先设置为空列表。
- 循环中 result.append(b) 可能应该是追加 b[c](即根据索引获取对应编码)。
- 输入 y(位数)未使用,如果您想实现移位或其他功能,需要额外代码。

以下是修复后的代码示例,假设 a 是字符列表,b 是对应的莫斯编码列表,并且忽略 y(位数)的用途(如果您需要用到 y,请补充说明):


  1. # 定义莫斯密码映射(示例,仅部分字符)
  2. a = ['A', 'B', 'C', 'L', 'M', 'N']  # 字符列表
  3. b = ['.-', '-...', '-.-.', '.-..', '--', '-.']  # 对应莫斯编码

  4. x = input("请输入明文:")
  5. y = input("请输入的位数:")  # 目前未使用,您可以根据需要修改代码

  6. x_code = list(x)  # 将字符串转换为字符列表,修复了 split 错误
  7. result = []  # 初始化结果列表

  8. for e in x_code:
  9.     if e in a:  # 检查字符是否在映射中
  10.         c = a.index(e)
  11.         result.append(b[c])  # 追加对应的莫斯编码
  12.     else:
  13.         print(f"警告:字符 '{e}' 不在映射列表中,已跳过。")

  14. print("编码结果:", result)
复制代码


说明:
- 使用 list(x) 替代 x.split("") 来分割字符。
- 添加了检查字符是否在 a 中的逻辑,避免找不到索引的错误。
- 如果您的 y 是用于移位(例如凯撒密码),可以在循环中修改 c 的值,例如 c = (c + int(y)) % len(a)

如果这不是您想要的,请提供更多细节,我会进一步协助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 13:16 | 显示全部楼层
本帖最后由 jackz007 于 2025-10-22 13:18 编辑
  1. x = input("请输入明文:")
  2. y = input("请输入的位数:")

  3. a = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N",
  4.      "O", "P", "Q", "R", "S", "T", "U", "W", "X", "Y", "Z"]
  5. b = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---",
  6.      "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-",
  7.      "..-", "...-", ".--", "-..-", "-.--", "--..", ".----", "..---", "...--",
  8.      "....-", ".....", "-....", "--...", "---..", "----.", "-----"]

  9. result = []
  10. for e in x :
  11.     c = a . index(e)
  12.     result . append(b[(c + int(y)) % len(a)])     # 如果 c + int(y) > 25,b[c+int(y)] 会下标越界
  13. print(result)
复制代码


        【运行实况】:
  1. D:\[00.Exercise]\[Python]>python mos.py
  2. 请输入明文:LLLLLLLL
  3. 请输入的位数:2
  4. ['-.', '-.', '-.', '-.', '-.', '-.', '-.', '-.']

  5. D:\[00.Exercise]\[Python]>python mos.py
  6. 请输入明文:ZZZZZZZZ
  7. 请输入的位数:2
  8. ['-...', '-...', '-...', '-...', '-...', '-...', '-...', '-...']

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-23 05:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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