Python 有打字错误:';int';对象不可下标编程caesar密码时出现问题

Python 有打字错误:';int';对象不可下标编程caesar密码时出现问题,python,Python,我目前正在尝试制作凯撒密码程序。有一个用字典数据制作的索引字典。显示字母索引,如OrderedDict([('A',0),('B',1),…,('Y',24),('Z',25)],假设字典的名称是“index”,所以我要做的是匹配list“dec_i”w字典索引的值和get键值,并放入列表中 enc_i = [1, 2, 3, ' ', 4, 5, 6, ' ', 7, 8, 9] 结果 enc_str = ['B', 'C', 'D',' ', 'E', 'F', 'G', ' ', 'H'

我目前正在尝试制作凯撒密码程序。有一个用字典数据制作的索引字典。显示字母索引,如
OrderedDict([('A',0),('B',1),…,('Y',24),('Z',25)]
,假设字典的名称是“index”,所以我要做的是匹配list“dec_i”w字典索引的值和get键值,并放入列表中

enc_i = [1, 2, 3, ' ', 4, 5, 6, ' ', 7, 8, 9]
结果

enc_str = ['B', 'C', 'D',' ', 'E', 'F', 'G', ' ', 'H', 'I', 'J']
我尽力做到了

def change():
    j=0
    for a in enc_i:
        for alphabet , number in Index.items():
            if a[j] == ' ':
                enc_str.extend([' '])
            elif number == a[j]:
                    enc_str.append(alphabet)
        j+=1
但它不起作用。说

TypeError:“int”对象不可下标


我应该如何修改或处理我的代码?

您对自己的数据类型感到困惑:

enc_i = [1, 2, 3, ' ', 4, 5, 6, ' ', 7, 8, 9]

for a in enc_i:
        if a[j] == ' ':
a
是来自
enc_1
的一系列元素,它们是整数1到9以及单个空格的两个字符串。循环的前三次,
a
是一个整数。当您遇到错误时,
a
j
均为零。您希望
0[0]
在您的
if
语句中是什么意思

我很困惑。Python解析器也是如此。混淆解析器会得到一条错误消息。记住,解析器制定规则。:-)

在第一次迭代中,a将是1,然后是2,然后是3,。。。所有整数

     if a[j] == ' ':
整数不可下标错误,您无法访问整数的索引0,它只是一个数字。不过你可以做enc_i[j]

def change():
    j=0
    for a in enc_i:
        for alphabet , number in Index.items():
            if a == ' ':
                enc_str.extend([' '])
            elif number == a:
                enc_str.append(alphabet)
        j+=1

也许你想要这个?

欢迎来到StackOverflow。请按照您创建此帐户时的建议,阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。为什么不让您的
索引
排序([(0,'a'),(1,'B'),…])
,以便您可以在其中查找值?现在你只是把它当作一个元组列表。如果a[j]=''
不应该在字母表、数字的
循环中。这将为编码增加26个空格。
def change():
    j=0
    for a in enc_i:
        for alphabet , number in Index.items():
            if a == ' ':
                enc_str.extend([' '])
            elif number == a:
                enc_str.append(alphabet)
        j+=1