2014-02-19 1 views
0

Я пытаюсь создать простой код шифрования/дешифрования в Python, как это (может быть, вы можете увидеть, что я иду):Строка для целочисленного неявного изменения, если не требуется?

def encrypt(): 
    import random 
    input1 = input('Write Text: ') 
    input1 = input1.lower() 
    key = random.randint(10,73) 
    output = [] 
    for character in input1: 
     number = ord(character) - 96 
     number = number + key 
     output.append(number) 
    output.insert(0,key) 
    print (''.join(map(str, output))) 
def decrypt(): 
    text = input ('What to decrypt?') 
    key = int(text[0:2]) 
    text = text[2:] 
    n=2 
    text = text 
    text = [text[i:i+n] for i in range(0, len(text), n)] 
    text = map(int,text) 
    text = [x - key for x in text] 
    text = ''.join(map(str,text)) 
    text = int(text) 
    print (text) 
    for character in str(text): 
     output = [] 
     character = int((character+96)) 
     number = str(chr(character)) 
     output.append(number) 
    print (''.join(map(str, output))) 

Когда я бегу дешифратор с выходом из выходного шифрования , Я получаю «TypeError: Невозможно преобразовать объект« int »в str неявно».

Как вы можете видеть, я добавил некоторые сокращения, чтобы помочь исправить ситуацию, но ничего не работает. Я запускал его с помощью другого кода (не могу вспомнить, что), но все, что осталось, было чем-то вроде «generatorobject at.».

Я действительно потерян, и я мог бы использовать некоторых парней-указателей, пожалуйста и спасибо.

EDIT: Проблема возникает на линии 27.

EDIT 2: Заменено "символ = INT ((символ +, 96))" с "символа = INT (символ) +96", теперь проблема заключается в том, что он только печатает (и, как я могу только предположить), только добавляет последнюю букву расшифрованного сообщения.

EDIT 2 SOLVED: output = [] был в цикле for, тем самым каждый раз перезагружая его. Проблема решена, спасибо всем!

+0

Полный отслеживающий, пожалуйста. – user2357112

+0

'text = text' - зачем вам это делать? – user2357112

+0

Ах, да, это была другая мысль, чтобы решить проблему, которая никогда не заканчивалась. – fjorn1

ответ

2

Полный отслеживающий бы помочь, но это выглядит как character = int(character)+96 является то, что вы хотите на линии 27.

+0

Возможно, 'character = chr (ord (character) + 96) - это то, что предполагал OP. (Затем избавьтесь от строки number = – jpaugh

+0

Теперь, пожалуйста, обратитесь к редакции 2, мне показалось, что я снова ее испортил. – fjorn1

Смежные вопросы