我为一个函数编写了代码,该函数执行单个字符的解密。我收到了这个错误消息:“int”对象是不可调用的,但我不知道这是指哪个对象,以及我到底是如何非法调用某些东西的。我做错了什么?谢谢。你知道吗
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
以下是错误回溯消息:
Traceback (most recent call last):
File "", line 1, in runfile('/Users/brandononeil/Documents/SS18proj04.py', wdir='/Users/brandononeil/Documents')
File "/anaconda/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 880, in runfile execfile(filename, namespace)
File "/anaconda/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile exec(compile(f.read(), filename, 'exec'), namespace)
File "/Users/brandononeil/Documents/SS18proj04.py", line 161, in main()
File "/Users/brandononeil/Documents/SS18proj04.py", line 148, in main decr_ch1 = affine_cipher_decryption(ch, rotation, ALPHA_NUM)
File "/Users/brandononeil/Documents/SS18proj04.py", line 101, in affine_cipher_decryption cipher_index = multiplicative_inverse(A,M)(index-N) % M
TypeError: 'int' object is not callable
此外,以下是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
的结果,我假设它返回一个int
。第二行尝试调用名为A_inverse
的函数,但局部变量在作用域中隐藏了该函数。你知道吗您可以通过重命名局部变量或函数来修复它。你知道吗
相关问题 更多 >
编程相关推荐