You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手编写Python加密代码遇IndexError问题求助

Python代码IndexError修复:实现字母转「索引长度+索引」加密功能

我把积木式语言转成Python代码后,用手机应用编写运行,一直报IndexError。代码如下:

#encoder key
rl = 0 # repeat letter
txt = "aa" #your text goes here
r = 1 # repeat
Alpha =(" ","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",""
#key end
while rl<(len(txt)):
 rl += 1
 while (r != (Alpha.index(txt[r]))) or (r <=27):
  r += 1
 num1 = (str(Alpha.index(txt[rl])))
 num1 = str(num1)
 en = (en+(str(len(num1))+(str(num1))))
print(en)

预期功能是:每个字母转成对应索引数字的长度+该数字的加密串,比如字母a对应11(索引1,长度1),字母k对应211(索引11,长度2)。


错误原因及修复步骤

  1. 语法错误:Alpha元组未闭合且多余元素
    Alpha的定义最后少了右括号,还多了一个空字符串,修正为:

    Alpha = (" ", "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")
    
  2. 变量未初始化:en未定义
    直接执行en = en + ...时en还没赋值,需要先初始化:

    en = ""
    
  3. 索引越界:手动循环的逻辑错误

    • 原代码中rl自增后直接取txt[rl],当rl等于len(txt)时就会超出字符串索引范围(Python字符串索引从0开始)。
    • 中间的while (r != (Alpha.index(txt[r]))) or (r <=27)完全多余,且r会不断增大,很快超出txt的索引范围,导致IndexError。

修复后的完整代码

txt = "aa"  # 待加密文本
en = ""     # 初始化加密结果字符串
# 字母表:空格对应索引0,a对应1,...,z对应26
Alpha = (" ", "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")

# 遍历每个字符处理
for char in txt:
    index = Alpha.index(char)  # 获取字符的索引
    index_str = str(index)     # 转成字符串
    # 拼接「索引长度+索引」到加密结果
    en += str(len(index_str)) + index_str

print(en)  # 输出加密结果

测试验证

  • 输入"aa",输出"1111"(每个a的索引是1,长度1,所以1+1=11,两个a就是1111)
  • 输入"k",输出"211"(k的索引是11,长度2,所以2+11=211)

内容的提问来源于stack exchange,提问作者Marcus757fu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 16:45:27