如何使用自定义模块修复“无法分配给操作员”错误

时间:2019-08-15 03:18:48

标签: python

我试图创建一个凯撒密码,我创建了自己的字典模块并在for循环中调用。该代码应采用输入消息的i索引,并将其转换为数字(通过字典模块),再添加一个密码输入,将其转换回新的加密字母,然后进行打印。问题是,当我运行它时,我收到一条错误消息,提示无法分配给操作员。我该如何解决?

我尝试更改i范围,但是恐怕与我制作的模块有关。我不太了解错误消息,所以您能帮我找出编码错误吗?

这是我的模块代码:

>>> import pprint, shelve, os, sys, shutil
>>> alphanum = {'a':1,'b':2,'c':3,'d':4,'e':5,'f':6,'g':7,'h':8,'i':9,'j':10,'k':11,'l':12,'m':13,'n':14,'o':15,'p':16,'q':17,'r':18,'s':19,'t':20,'u':21,'v':22,'w':23,'x':24,'y':25,'z':26}
>>> pprint.pformat(alphanum)
"{'a': 1,\n 'b': 2,\n 'c': 3,\n 'd': 4,\n 'e': 5,\n 'f': 6,\n 'g': 7,\n 'h': 8,\n 'i': 9,\n 'j': 10,\n 'k': 11,\n 'l': 12,\n 'm': 13,\n 'n': 14,\n 'o': 15,\n 'p': 16,\n 'q': 17,\n 'r': 18,\n 's': 19,\n 't': 20,\n 'u': 21,\n 'v': 22,\n 'w': 23,\n 'x': 24,\n 'y': 25,\n 'z': 26}"
>>> AlphaCaesar = open('Caesar.py','w')
>>> AlphaCaesar.write('alphanum = {} \n'.format(pprint.pformat(alphanum)))
263
>>> AlphaCaesar.close()
>>> import Caesar
>>> Caesar.alphanum
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7, 'h': 8, 'i': 9, 'j': 10, 'k': 11, 'l': 12, 'm': 13, 'n': 14, 'o': 15, 'p': 16, 'q': 17, 'r': 18, 's': 19, 't': 20, 'u': 21, 'v': 22, 'w': 23, 'x': 24, 'y': 25, 'z': 26}

这是我的凯撒密码程序代码:

import Caesar
alphavalues = Caesar.alphanum
print('enter your message to encrypt')
message = input()
print('enter the cipher number')
ciphernum = input()
for i in range(0,len[encryption]):
    alphavalues[message[i]] + int(ciphernum) = newcaesaralpha
    print(alphavalues[newcaesaralpha])

1 个答案:

答案 0 :(得分:1)

您的作业已倒退。 newcaesaralpha是目标,必须出现在左侧。另外,您需要使用%来确保总和在1到26之间。

newcaesaralpha = (alphavalues[message[i]] - 1 + int(ciphernum)) % 26 + 1

(如果您将字母从0到25而不是1到26进行编号,该算法会更简单。)