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