2011-04-20 46 views
0

Idk为什么这不会输出到文件,有什么想法或帮助?用户输入加密/解密

def encrypt(text, key): 
    alphabet = "abcdefghijklmnopqrstuvwxyz" 
    text = text.lower() 
    cipherText = "" 
    for ch in text: 
     idx = alphabet.find(ch) 
     cipherText = cipherText + key[idx] 
    return cipherText 

def decrypt(cipherText, key): 
    alphabet = "abcdefghijklmnopqrstuvwxyz" 
    cipherText = cipherText.lower() 
    text = "" 
    for ch in cipherText: 
     idx = key.find(ch) 
     text = text + alphabet[idx] 
    return text 

def main(): 
    userInput = input("Operation (encrypt, decrypt, exit): ") 
    while(userInput != "exit"): 
     if(userInput == "encrypt"): 
      in_file = open(input("Input file name: "), 'r') 
      out_file = open(input("Output file name: "), 'w') 
      password = input("Password: ") 
      for line in in_file: 
       read_line = in_file.readline() 
       encrypted_line = encrypt(read_line, password) 
       out_file.write(encrypted_line) 
       print(encrypted_line) 
      in_file.close() 
      out_file.close() 

     elif(userInput == "decrypt"): 
      in_file = open(input("Input file name: "), 'r') 
      out_file = open(input("Output file name: "), 'w') 
      password = input("Password: ") 
      for line in in_file: 
       read_line = in_file.readline() 
       decrypted_line = decrypt(read_line, password) 
       out_file.write(decrypted_line) 
       print(decrypted_line) 
      in_file.close() 
      out_file.close() 

     else: 
      print("Invalid choice!") 
     userInput = input("Operation (encrypt, decrypt, exit): ") 

main() 
+1

什么问题?请不要在没有提供信息的情况下将代码扔在我们的头上,代码正在做什么或应该做什么。 – 2011-04-20 06:33:47

+0

idk =我不知道 – 2011-04-20 06:49:28

+0

你有没有回溯?打印(decrypted_line)打印什么? – joaquin 2011-04-20 07:15:51

回答

0

我能想到的2个轨道以遵循:

  • 使用raw_input,它返回一个字符串,而不是input返回一个函数(即无效您的测试userInput == "decrypt"和类似)
  • for line in in_file:就足以浏览一个文件,你不需要添加read_line = in_file.readline()