NameError: name 'guess' is not defined

Gary Herron gherron at islandtraining.com
Sat Mar 22 16:51:52 CET 2008


willkab6 at gmail.com wrote:
> I am very new to both programming and Pyhton and while trying to do
> some practice using A byte of python an Error pops up on the IDLE
> shell. I am using windows XP. PLease see below.
> while running:
> guess = int(raw_input('Enter an integer : '))
>
> if guess == number:
> print 'Congratulations, you guessed it.'
> running = False # this causes the while loop to stop
> elif guess < number:
> print 'No, it is a little higher than that.'
> else:
> print 'No, it is a little lower than that.'
> else:
> print 'The while loop is over.'
> # Do anything else you want to do here
>
> print 'Done'
>
> After typing the above as the book says, I get the error NameError:
> name 'guess' is not defined
> What Am I doing wrong?
>   
You are not describing the problem accurately.  The above program would 
not even start *running*.  It would produce an
   IndentationError: expected an indented block
on the second line.   If you did manage to get the to get the program 
entered with correct indentation,  it would gave a NameError on the 
variable named running not on guess.

So now:  Tell us what really happened, and perhaps your question can be 
answered.

Hint: 

  Each of the lines that end in a colon start a block of code which must 
be indented.

  Any variable used in a calculation must be given a value *before* the 
calculation is carried out.

  I think this might be what you were trying to do (untested):


number = 12345 # Defines the number variable before using

while True:
  guess = int(raw_input('Enter an integer : '))

  if guess == number:
    print 'Congratulations, you guessed it.'
    break # this causes the while loop to stop
  elif guess < number:
    print 'No, it is a little higher than that.'
  else:
    print 'No, it is a little lower than that.'

print 'The while loop is over.'
print 'Done'


Gary Herron






More information about the Python-list mailing list