解密函数:“int”对象不是callab

2024-06-16 12:14:34 发布

您现在位置: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

以下是错误回溯消息:

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)。你知道吗

还有什么问题吗?你知道吗


Tags: inpyindexlinechusersdocumentsfile
1条回答
网友
1楼 · 发布于 2024-06-16 12:14:34

你的问题是这两条线:

A_inverse = multiplicative_inverse(A,M)
cipher_index = A_inverse(index-N) % M

A_inverse被设置为multiplicative_inverse的结果,我假设它返回一个int。第二行尝试调用名为A_inverse的函数,但局部变量在作用域中隐藏了该函数。你知道吗

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

相关问题 更多 >