NameError: name 'guess' is not defined
Gary Herron
gherron at islandtraining.com
Sat Mar 22 11:51:52 EDT 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