Use raw_input instead. See http://docs.python.org/library/functions.html#raw_input.  input will do the same thing as eval(raw_input(prompt)), so entering in Jhon will try to find the symbol Jhon within the file (which doesn't exist). So for your existing script you'd have to input 'Jhon' (notice the set of quotes) in the prompt so the eval will convert the value to a string.
Here's the excerpt warning from the input documentation.
Warning
This function is not safe from user
  errors! It expects a valid Python
  expression as input; if the input is
  not syntactically valid, a SyntaxError
  will be raised. Other exceptions may
  be raised if there is an error during
  evaluation. (On the other hand,
  sometimes this is exactly what you
  need when writing a quick script for
  expert use.)
Below is the corrected version:
#!usr/bin/python
# The list is implied with the variable name, see my comment below.
names = []
try:
    # We need to convert the names input to an int using raw input.
    # If a valid number is not entered a `ValueError` is raised, and
    # we throw an exception.  You may also want to consider renaming
    # names to num_names.  To be "names" sounds implies a list of
    # names, not a number of names.  
    num_names = int(raw_input("Pls enter how many of names:"))
except ValueError:
    raise Exception('Please enter a valid number.')
# You don't need x=1. If you want to start your name at 1 
# change the range to start at 1, and add 1 to the number of names.
for x in range(1, num_names+1)):
    inname = raw_input("Enter the name " + str(x))
    names.append(inname)
print names
NOTE: This is for Python2.x.  Python3.x has fixed the input vs. raw_input confusion as explained in the other answers.