2016-01-01 3 views
0

Вот мой код В основном я должен создать программу шифрования и дешифрования, которая может открывать и кодировать/декодировать файлы, а затем сохранять дешифрованное/зашифрованное сообщение. Как вы можете видеть, я использовал ключевое слово Caesar cipher, которое сдвинет сообщение. Тем не менее, я относительно новичок в python и мало знаю, как я сохраню закодированное или декодированное сообщение или как открыть сообщение для кодирования/декодирования. Помощь будет действительно оценена.Программа шифрования не работает

def getMode(): 
    while True: 
     print('Do you wish to encrypt or decrypt a message?') 
     mode = input().lower() 
     if mode in 'encrypt e decrypt d'.split(): 
      return mode 
     else: 
      print('Enter either "encrypt" or "e" or "decrypt" or "d".') 
def getMessage(): 
    file=input("enter file name (dont write .txt)") 
    f = open (file+'.txt','r') 
    return input() 
def getKey(): 
    key = 0 
    while True: 
     print('Enter the key number (1-%s)' % 26) 
     key = int(input()) 
     if (key >= 1 and key <= 26): 
      return key 
def getTranslatedMessage(mode, message, key): 
    if mode[0] == 'd': 
     key = -key 
    translated = '' 
    for symbol in message: 
     if symbol.isalpha(): 
      num = ord(symbol) 
      num += key 
      if symbol.isupper(): 
       if num > ord('Z'): 
        num -= 26 
       elif num < ord('A'): 
        num += 26 
      elif symbol.islower(): 
       if num > ord('z'): 
        num -= 26 
       elif num < ord('a'): 
        num += 26 
      translated += chr(num) 
     else: 
      translated += symbol 
    return translated 
mode = getMode() 
message = getMessage() 
key = getKey() 
print('Your translated text is:') 
print(getTranslatedMessage(mode, message, key)) 
getMode() 
getMessage() 
getKey() 
getTranslatedMessage(mode, message, key) 
getTranslatedMessage(mode, message, key) 

ответ

1

Вы должны просмотреть функцию getMessage(). На самом деле это не возвращает содержимое файла.

Изменение getMessage() следующим образом заставило его работать.

def getMessage(): 
    file=input("enter file name (dont write .txt)") 
    with open(file+'.txt', 'r') as text_file: 
     read_data = text_file.read() 
    return read_data 
+0

Лучше использовать переменные, имеющие значение, чем что-то вроде 'f'. Мы, разработчики, пишем код для следующего разработчика, чтобы читать и понимать легко и быстро. Позже в коде, если менее понятно, что такое 'f'. Да, мы должны набрать больше, и у нас есть автозаполнение во многих IDE, чтобы помочь с этим. – zaph

+0

Да ... согласился. Я отредактирую ответ. – narenfern

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