|  | 
 
| 
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  复制代码x = input("请输入明文:")
y = input("请输入的位数:")
a = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N",
     "O", "P", "Q", "R", "S", "T", "U", "W", "X", "Y", "Z"]
b = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---",
     "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-",
     "..-", "...-", ".--", "-..-", "-.--", "--..", ".----", "..---", "...--",
     "....-", ".....", "-....", "--...", "---..", "----.", "-----"]
x_code = list(x)
result = []
c = ("")
for e in x_code:
    c = (c + int(y)) % len(a)
    result.append(b[c + y])
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
 
您的代码有几个错误,主要问题在于变量类型不匹配和逻辑错误。下面我将逐步解释并提供一个修正后的版本。 
首先,错误分析: 
- 在行 `c = (c + int(y)) % len(a)` 中,`c` 被初始化为空字符串 `""`,而 `int(y)` 是整数。Python 中字符串和整数不能直接相加,因此报错 `TypeError`。 
- 其他问题:`a` 和 `b` 未定义,`result` 未初始化,循环中没有使用字符 `e`,导致逻辑错误。
 
修正思路: 
- 定义字母表(例如大写字母)。 
- 初始化 `result` 为空列表。 
- 遍历每个字符,计算其在字母表中的新位置(加上偏移量后取模),并获取新字符。 
- 处理非字母字符(保持不变)。
 
以下是修正后的代码示例:
 复制代码
x = input("请输入明文:")
y = input("请输入的位数:")
# 定义字母表(假设为大写字母)
a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
# 初始化结果列表
result = []
# 将明文转换为字符列表
x_code = list(x)
# 遍历每个字符
for char in x_code:
    if char in a:
        # 计算字符在字母表中的索引
        index_old = a.index(char)
        # 计算新索引(加上偏移量并取模)
        index_new = (index_old + int(y)) % len(a)
        # 获取新字符并添加到结果
        new_char = a[index_new]
        result.append(new_char)
    else:
        # 如果字符不在字母表中,保持原样
        result.append(char)
# 将结果列表转换为字符串并打印
print(''.join(result))
使用您的输入示例(明文 LL ,位数 2 ),输出应为 NN (因为 L 在字母表中是第11个,加2后是13,对应 N)。
 
如果您的意图不同(例如使用自定义字母表),请调整变量 a  的定义。
 
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 | 
 |