解密功能:'int'对象不可调用



我已经为执行单个字符解密的函数编写了代码。我收到了此错误消息:" 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的函数,但本地变量阴影范围中的函数。

您可以通过重命名本地变量或函数来解决它。

最新更新