Simple 'Evolution of Text' app
Some suggestions:


Your algorithm is not doing the same thing as the original.  The original randomizes the entire string each time, except the correct bits, while yours randomizes only one character each time.
You can iterate directly over lists.  So you don't need range(len(target)), you can just do for _ in target.
You should define string.ascii_letters + string.digits + string.punctuation + ' ' as a new variable on a separate line so you can re-use it.  
You can use the modulus operator % to keep the index inside the correct bounds.