鱼C论坛

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

[已解决]请求帮助!

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

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

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

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 = list(x)

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

怎么错的
请输入明文:LL
请输入的位数:2
Traceback (most recent call last):
  File "C:/Users/10690/Desktop/莫斯密码(进化).py", line 16, in <module>
    c = (c + int(y)) % len(a)
TypeError: can only concatenate str (not "int") to str
最佳答案
昨天 13:16
您的代码有几个错误,主要问题在于变量类型不匹配和逻辑错误。下面我将逐步解释并提供一个修正后的版本。

首先,错误分析:
- 在行 `c = (c + int(y)) % len(a)` 中,`c` 被初始化为空字符串 `""`,而 `int(y)` 是整数。Python 中字符串和整数不能直接相加,因此报错 `TypeError`。
- 其他问题:`a` 和 `b` 未定义,`result` 未初始化,循环中没有使用字符 `e`,导致逻辑错误。

修正思路:
- 定义字母表(例如大写字母)。
- 初始化 `result` 为空列表。
- 遍历每个字符,计算其在字母表中的新位置(加上偏移量后取模),并获取新字符。
- 处理非字母字符(保持不变)。

以下是修正后的代码示例:


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

  3. # 定义字母表(假设为大写字母)
  4. a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

  5. # 初始化结果列表
  6. result = []

  7. # 将明文转换为字符列表
  8. x_code = list(x)

  9. # 遍历每个字符
  10. for char in x_code:
  11.     if char in a:
  12.         # 计算字符在字母表中的索引
  13.         index_old = a.index(char)
  14.         # 计算新索引(加上偏移量并取模)
  15.         index_new = (index_old + int(y)) % len(a)
  16.         # 获取新字符并添加到结果
  17.         new_char = a[index_new]
  18.         result.append(new_char)
  19.     else:
  20.         # 如果字符不在字母表中,保持原样
  21.         result.append(char)

  22. # 将结果列表转换为字符串并打印
  23. print(''.join(result))
复制代码


使用您的输入示例(明文 LL,位数 2),输出应为 NN(因为 L 在字母表中是第11个,加2后是13,对应 N)。

如果您的意图不同(例如使用自定义字母表),请调整变量 a 的定义。

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

使用道具 举报

发表于 昨天 13:16 | 显示全部楼层    本楼为最佳答案   
您的代码有几个错误,主要问题在于变量类型不匹配和逻辑错误。下面我将逐步解释并提供一个修正后的版本。

首先,错误分析:
- 在行 `c = (c + int(y)) % len(a)` 中,`c` 被初始化为空字符串 `""`,而 `int(y)` 是整数。Python 中字符串和整数不能直接相加,因此报错 `TypeError`。
- 其他问题:`a` 和 `b` 未定义,`result` 未初始化,循环中没有使用字符 `e`,导致逻辑错误。

修正思路:
- 定义字母表(例如大写字母)。
- 初始化 `result` 为空列表。
- 遍历每个字符,计算其在字母表中的新位置(加上偏移量后取模),并获取新字符。
- 处理非字母字符(保持不变)。

以下是修正后的代码示例:


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

  3. # 定义字母表(假设为大写字母)
  4. a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

  5. # 初始化结果列表
  6. result = []

  7. # 将明文转换为字符列表
  8. x_code = list(x)

  9. # 遍历每个字符
  10. for char in x_code:
  11.     if char in a:
  12.         # 计算字符在字母表中的索引
  13.         index_old = a.index(char)
  14.         # 计算新索引(加上偏移量并取模)
  15.         index_new = (index_old + int(y)) % len(a)
  16.         # 获取新字符并添加到结果
  17.         new_char = a[index_new]
  18.         result.append(new_char)
  19.     else:
  20.         # 如果字符不在字母表中,保持原样
  21.         result.append(char)

  22. # 将结果列表转换为字符串并打印
  23. print(''.join(result))
复制代码


使用您的输入示例(明文 LL,位数 2),输出应为 NN(因为 L 在字母表中是第11个,加2后是13,对应 N)。

如果您的意图不同(例如使用自定义字母表),请调整变量 a 的定义。

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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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