title: Vigenere Cipher Encrypt and Decrypt
body: <p>I have written a piece of code that has a Caesars cipher and then a Vigenere Cipher that follows. The code give a choice to encrypt or decrypt and the encrypting works fine however the decrypt doesn't. What have I done wrong? </p>
  
  <pre><code>  playing = True
      string = ""
      Alphabet = ('z','a','b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z')
  
      def EncryptVigenere():
              plainText = input("Please enter the plain text: ")
              key = input("Please enter the key: ")
              keyList = []
              keyLength = 0
              num = 0
              while keyLength &lt; len(plainText):
                  try:
                      char = key[num]
                  except IndexError:
                      num = 0
                      char = key[num]
                  keyList.append(str(char))
                  keyLength += 1
                  num+= 1
                  CipherText = [] 
                  IndexValue = 0
                  keyIncrement = 0
              for plainTextChar in plainText:
                   IndexValue = Alphabet.index(keyList[keyIncrement]) + Alphabet.index(plainTextChar)
                   while IndexValue &gt; 26:
                       IndexValue = IndexValue - 26
                   CipherText.append(Alphabet[IndexValue])
                   keyIncrement = keyIncrement + 1
                   print (''.join(CipherText))
  
              finish = input('Would you like to go again Y or N')
              if finish == 'n' or finish == 'N':
                  retry = input ("Would you like to go again? Y or N: ")
                  if retry == 'N' or retry == 'n':
                      print ("Please exit the window")
                      import time
                      time.sleep(1)
                      import sys
                      sys.exit()
  
  
      def DecryptVigenere():             
                  plainText = input("Please enter the plain text: ")
                  key = input("Please enter the key: ")
                  keyList = []
                  keyLength = 0
                  num = 0
                  while keyLength &lt; len(plainText):
                      try:
                          char = key[num]
                      except IndexError:
                          num = 0
                          char = key[num]
                      keyList.append(str(char))
                      keyLength += 1
                      num -= 1
                      CipherText = [] 
                      IndexValue = 0
                      keyIncrement = 0
                  for plainTextChar in plainText:
                       IndexValue = Alphabet.index(keyList[keyIncrement]) - Alphabet.index(plainTextChar)
                       while IndexValue &gt; 26:
                           IndexValue = IndexValue - 26
                       CipherText.append(Alphabet[IndexValue])
                       keyIncrement = keyIncrement + 1
                       print (''.join(CipherText))
  
                  finish = input('Would you like to go again Y or N')
                  if finish == 'n' or finish == 'N':
                          retry = input ("Would you like to go again? Y or N: ")
                          if retry == 'N' or retry == 'n':
                                  print ("Please exit the window")
                                  import time
                                  time.sleep(1)
                                  import sys
                                  sys.exit()
  
  
      while playing == True:
          keyIncrement = 0    
          string = ""
          eord = input('Type "d" to "decrypt" and "e" to "encrypt": ')
  
          if eord == 'e':
              texte = input ("Type your word to encrypt: ")
              key1 = int(input("Choose a key between 1-26: "))
              for letter in texte:
                  number = (ord(letter)) + (key1)
                  letter=(chr(number))
                  string = (str(string)) + (str(letter))
              print (string)
              keyword = input ("Type 'encrypt' code further or 'decrypt' further: ")
  
              if keyword == 'encrypt' or keyword == 'e':
                  EncryptVigenere()
  
              elif keyword == 'decrypt' or keyword == 'd':
                  DecryptVigenere()   
  
  
          elif eord == 'd':
              texd = input ("Type your word to decrypt: ")
              key2 = int(input("Choose a key between 1-16: "))        
              for letter in texd:
                  number = (ord(letter)) - (key2)
                  letter=(chr(number))
                  string = (str(string)) + (str(letter))
              print (string)
              keyword = input ("Type 'encrypt' code further or 'decrypt' further: ")
  
              if keyword == 'decrypt' or keyword == 'd':
                  DecryptVigenere()
  
              elif keyword == 'encrypt' or keyword == 'e':
                  EncryptVigenere()    
  </code></pre>
  
  <p>When I try to print a decrypted code using the Vigenere cipher the code output isn't correct. Thanks in advance:).                                 </p>