2016-03-05 6 views
0

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

Мой код:

while True: 
    print('Do you wish to encrypt or decrypt your textfile?') 
    option = input().lower() 
    if option in ["e","encrypt","d","decrypt"]: 
     break 
    else: 
     print('Enter again') 


key1 = input("Enter your first keyword ").upper() 
if len(key1) == 0: 
     print ('Your keyword has to be more than one character. Enter again') 

key1 = ([ord(k) for k in key1]) 
key1 = (key1)*100 
print (key1) 

key2 = input("Enter your second keyword ").upper() 
if len(key2) == 0: 
    print ('Your keyword has to be more than one character. Enter again') 

key2 = ([ord(e) for e in key2]) 
key2 = (key2)*100 
print (key2) 

efile = input('Enter the text file you want to change (with .txt)') 
efile = open(efile).read() 
efile = efile.upper() 

k = 0 
e = 0 

string = '' 
for symbol in efile: 
    ctext = ord(symbol) 
    if ctext == 32: 
     ctext = chr(ctext) 
     ctext = str(ctext) 
     string += ctext 
#print(string) 

else: 
    while len(string)> 0: 
     ctext += key1[k] 
     if ctext > 90: 
      ctext -= 64 
     ctext += key2[e] 
     if ctext > 90: 
      ctext -= 64 
     ctext = chr(ctext) 
     ctext = str(ctext) 
     string += ctext 
     k+=1 
     e+=1 
print(ctext) 


    ctext += key1[k] 

Python выдает следующее сообщение об ошибке при запуске мой код:

TypeError: Can't convert 'int' object to str implicitly 

Я был бы очень признателен, если кто-то может дать мне совет в решении этого, как я понятия не имею, ! :)

+1

"есть ошибка" Какая ошибка? Что такое вход? Какой результат вы ожидаете? Какой результат вы получаете? –

+0

Пожалуйста, разместите полную информацию о трассе. – timgeb

+0

Кодирование криптографического скрипта - хороший способ узнать как математику, так и Python. Но просто напоминание здесь. НИКОГДА не используйте встроенный криптографический код дома! – MyGGaN

ответ

0

В случае ctext равен 32, вы преобразования его в string, когда цикл for исчерпан, else Прицел выполняется, в котором вы пытаетесь запустить:

ctext += key1[k] # ctext is a string, key1[k] is an int 

Same as:

# Python 3 
variable = '2' 
variable += 1 
>> TypeError: Can't convert 'int' object to str implicitly 
+0

Я не хочу, чтобы весь ctext равнялся 32, я имел в виду, если это 32 (пробел в ASCII), не шифруйте его. Как сделать ctext в массив целых чисел? –

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