我已经为执行单个字符解密的函数编写了代码。我收到了此错误消息:" int"对象无法callable,但我不知道该对象是指哪个对象,以及我如何完全调用某些东西。我做错了什么?谢谢。
def affine_cipher_decryption(ch,N,alphabet):
M = len(alphabet)
A = get_smallest_co_prime(M)
A_inverse = multiplicative_inverse(A,M)
counter = -1
for element in alphabet:
if element == ch:
counter += 1
index = counter
break
else:
counter += 1
cipher_index = A_inverse(index-N) % M
cipher_ch = alphabet[cipher_index]
return cipher_ch
这是错误追溯消息:
追溯(最近的最新电话(:
文件",第1行,在 runfile('/users/brandononeil/documents/ss18proj04.py',wdir ='/users/users/brandononeil/documents'(
文件 "/anaconda/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", 第880行,在Runfile中 execfile(文件名,名称空间(
文件 "/anaconda/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", 第102行,在Execfile中 exec(compile(f.read((,文件名,'exec'(,名称空间(
file"/users/brandononeil/documents/ss18proj04.py",第161行,in main((
file"/users/brandononeil/documents/ss18proj04.py",第148行,in 主要的 dect_ch1 = affine_cipher_decryption(ch,旋转,alpha_num(
文件"/users/brandononeil/documents/ss18proj04.py",第101行,in affine_cipher_decryption cipher_index = multiplicative_inverse(a,m((index-n(%m
typeerror:'int'对象不是可呼叫
另外,这是multiplicative_inverse
的内容:
def multiplicative_inverse(A,M):
for x in range(M):
if (A*x)%M == 1:
return x
我已经尝试重命名A_inverse
,并且我尝试编写affine_cipher_decryption
内部multiplicative_inverse
功能的内容(因此我不必致电multiplicative_inverse
(无用。
关于还有什么问题的想法?
您的问题是这两行:
A_inverse = multiplicative_inverse(A,M)
cipher_index = A_inverse(index-N) % M
A_inverse
设置为multiplicative_inverse
的结果,我假设返回int
。第二行试图调用名为 A_inverse
的函数,但本地变量阴影范围中的函数。
您可以通过重命名本地变量或函数来解决它。