解密函数:'int'对象不可调用

时间:2018-02-10 05:08:46

标签: python

我为一个执行单个字符解密的函数编写了代码。我收到此错误消息:'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

以下是错误追溯消息:

  

追踪(最近一次呼叫最后一次):

     

文件“”,第1行,in       runfile('/ Users / brandononeil / Documents / SS18proj04.py',wdir ='/ Users / brandononeil / Documents')

     

文件   “/anaconda/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py”   第880行,在runfile中       execfile(filename,namespace)

     

文件   “/anaconda/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py”   第102行,在execfile中       exec(compile(f.read(),filename,'e​​xec'),namespace)

     

文件“/Users/brandononeil/Documents/SS18proj04.py”,第161行,          main()的

     

文件“/Users/brandononeil/Documents/SS18proj04.py”,第148行,   主要       decr_ch1 = affine_cipher_decryption(ch,rotation,ALPHA_NUM)

     

文件“/Users/brandononeil/Documents/SS18proj04.py”,第101行,在   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,我尝试在multiplicative_inverse内编写affine_cipher_decryption函数的内容(所以我不必调用{{1}无效。

关于还有什么可能是错误的任何想法?

1 个答案:

答案 0 :(得分:2)

你的问题是这两行:

A_inverse

multiplicative_inverse设置为int的结果,我假设它返回A_inverse。第二行尝试调用名为'?'.ord的函数,但局部变量会影响范围中的函数。

您可以通过重命名局部变量或函数来修复它。