首页 > 解决方案 > 尝试下标时出现不可下标错误

问题描述

我们从只包含小写字母的用户输入字符串开始

for letter in encoded_input:
        if letter == ' ':
            decoded_output.append(' ')
            continue
        
        decoded_output.append(map_input(letter,tpos1,tpos2,tpos3))

然后传递给这个函数

def map_input(value,r1,r2,r3,wr=wiring,rf=reflector):#Use reflector as well
    pass1 = rf[r3[r2[r1[wr[ALPH.index(value)]]]]]
    r1,r2,r3 = reverse_rotors(r1,r2,r3)
    return ALPH[wr[r1[r2[r3[pass1]]]]]

其中传递的所有变量都是包含数字 0-25 的列表,这些数字以独特的排列方式排列。

问题

但是,当我这样做时,我收到一条错误消息告诉我

pass1 = rf[r3[r2[r1[wr[ALPH.index(value)]]]]]
TypeError: 'int' object is not subscriptable

我错过了明显的事情还是发生了一些微妙的事情?Value 在 ALPH 中确实是一个小写字母(它只是一个包含字母表的列表)。

标签: pythonpython-3.xtypeerror

解决方案


该错误意味着您尝试执行foo[bar]where foois an integer。像这样的东西

x = 1
x[0]

将重现错误。所以在这里,反射器、字母、tpos1、tpos2、tpos3 或接线之一是整数。


推荐阅读