title: Python String Comparisons Using A Word List
body: <p>Eventually I will be able to post simple questions like this in a chat room, but for now I must post it.  I am still struggling with comparison issues in Python.  I have a list containing strings that I obtained from a file.  I have a function which takes in the word list (previously created from a file) and some 'ciphertext'.  I am trying to Brute Force crack the ciphertext using a Shift Cipher.  My issue is the same as with comparing integers.  Although I can see when trying to debug using print statements, that my ciphertext will be shifted to a word in the word list, it never evaluates to True.  I am probably comparing two different variable types or a /n is probably throwing the comparison off.  Sorry for all of the posts today, I am doing lots of practice problems today in preparation for an upcoming assignment.</p>
  
  <pre><code>  def shift_encrypt(s, m):
  
     shiftAmt = s % 26
     msgAsNumList = string2nlist(m)
  
     shiftedNumList = add_val_mod26(msgAsNumList, shiftAmt)
     print 'Here is the shifted number list: ', shiftedNumList
  
     # Take the shifted number list and convert it back to a string
     numListtoMsg = nlist2string(shiftedNumList)
     msgString = ''.join(numListtoMsg)
  
     return msgString
  
   def add_val_mod26(nlist, value):
     newValue = value % 26
     print 'Value to Add after mod 26: ', newValue
     listLen = len(nlist)
     index = 0
     while index &lt; listLen:
         nlist[index] = (nlist[index] + newValue) % 26
         index = index + 1
     return nlist
  
   def string2nlist(m):
     characters =    ['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']
     numbers = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]
     newList = []
     msgLen = len(m)         # var msgLen will be an integer of the length
  
     index = 0               # iterate through message length in while loop
     while index &lt; msgLen:
         letter = m[index]   # iterate through message m
         i = 0
         while i &lt; 26:
             if letter == characters[i]:
                 newList.append(numbers[i])
             i = i + 1
         index = index + 1
      return newList
  
    def nlist2string(nlist):
      characters = ['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']
      numbers = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]
      newList = []
      nListLen = len(nlist)
  
      index = 0
      while index &lt; nListLen:
          num = nlist[index]
          newNum = num % 26
          i = 0
          while i &lt; 26:
              num1 = newNum
              num2 = numbers[i]
              if (num1 == num2):
              newList.append(characters[i])
          i = i + 1
      index = index + 1
      return newList
  
  
    def wordList(filename):
  
      fileObject = open(filename, "r+")                    
      wordsList = fileObject.readlines()
      return wordsList
  
  
    def shift_computePlaintext(wlist, c):
  
      index = 0
      while index &lt; 26:
          newCipher = shift_encrypt(index, c)
          print 'The new cipher text is: ', newCipher
          wordlistLen = len(wlist)
          i = 0
          while i &lt; wordlistLen:
              print wlist[i]
              if newCipher == wlist[i]:
                  return newCipher
              else:
                  print 'Word not found.'
              i = i + 1
          index = index + 1    
  
     print 'Take Ciphertext and Find Plaintext from Wordlist Function: \n'
     list = wordList('test.txt')
     print list
     plainText = shift_computePlaintext(list, 'vium')
     print 'The plaintext was found in the wordlist: ', plainText
  </code></pre>
  
  <p>When the shift amount = 18, the ciphertext = name which is a word in my wordlist, but it never evaluates to True.  Thanks for any help in advance!!</p>