2016-03-11 4 views
0

Я пытаюсь расшифровать текстовый файл, который я недавно зашифровал, используя кусок кода, который я создал, который отлично работает, , чтобы иметь возможность расшифровать мой код. Мне нужно выяснить, из моей ранее показанной 8-значной символьной клавиши, и когда пользователь вводит ее, она полностью прекрасна, и эта часть кода работает нормально. поэтому я вычислили мое смещение фактор и когда я иду, чтобы изменить свои символы в целые числа до минус смещения для затем преобразовать обратно к персонажу я столкнулся с сообщением, которое читаетStr не является вызываемой ошибкой

Traceback (most recent call last):
File "N:\4512_CB4-Traditional Application\Encryption,Decrption coursework.py", line 154, in MainMenu()
File "N:\4512_CB4-Traditional Application\Encryption,Decrption coursework.py", line 22, in MainMenu Decrypt()
File "N:\4512_CB4-Traditional Application\Encryption,Decrption coursework.py", line 135, in Decrypt y=chr(x)
TypeError: 'str' object is not callable

Это мой код:

def Decrypt(): 
Message=[] 
Character=[] 
for chr in Decry: 
    A = (ord(chr)) 
    Character.append(A) 
c = sum(Character) 
c = round(c/8) 
c = c - 32 

print("\n" *1) 
print('Starting Decryption') 
count = 0 
while count !=len(info): 
    Message.append(info[count]) 
    count=count+1 
count = 0 
while count!=len(info): 
    if Message[count] == " ": 
     count=count+1 
    else: 
     x=ord(Message[count]) 
     x=x-c 
     if x <33: 
      x=x+94 
      y=chr(x) 
      Message[count]=y 
      count=count+1 
     else: 
      y=chr(x) 
      Message[count]=y 
      count=count+1 
print("...Decryption finished...") 
time.sleep(1) 
file=",".join(Message).replace(",","") 
print('This is your new text file') 
print(file) 
filename = input('what would you like your file to be saved as')+'.txt' 
openfile = open (filename, 'w') 
thedetails =openfile.write(file) 
time.sleep(1) 
print('Done!') 
+0

У вас есть теневое функционирование 'chr', выполнив' для chr в Decry: '. Значение последней переменной цикла протекает в глобальном масштабе. –

ответ

0

Проблема в том, что вы перезаписали функцию chr, используя ее как переменную в верхней части кода. Поэтому переименуйте эту переменную, и она должна работать нормально.

Чтобы уточнить, ниже приведен фрагмент ниже этого цикла for. Python будет обрабатывать chr как переменную вместо встроенной функции, которой она была раньше.

for chr in Decry: 
    A = (ord(chr)) 
-1

В качестве альтернативы просто создать копию CHR вроде этого:

 def copyofchr(**args): 
     chr(**args) 

теперь всегда, когда вы использовали chr() для чего-то, заменить его copyofchr() Теперь нужно реализовать этот крошечный код на вершине после ваша функция Decrypt() будет работать.

С уважением Heureka

+0

спасибо, сейчас это работает – callumkenebel

0

Попробуйте переименовать chr в петле for:

for chr in Decry: 
    A = (ord(chr)) 

с каким-либо другим именем. Это создает конфликт со встроенной функцией chr.