尝试下标时不可下标错误

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


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

我是否遗漏了显而易见的事情,还是发生了一些微妙的事情?值确实是 ALPH 中的小写字母(它只是一个包含字母表的列表)。


largeQ
浏览 164回答 1
1回答

慕沐林林

该错误意味着您尝试执行foo[bar]wherefoo是一个整数。像这样的东西x = 1x[0]将重现错误。所以在这里,反射器、字母、tpos1、tpos2、tpos3 或布线之一是整数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python