else & elif statements not working in Python
It looks like you are entering a blank line after the body of the if
statement. This is a cue to the interactive compiler that you are done with the block entirely, so it is not expecting any elif
/else
blocks. Try entering the code exactly like this, and only hit enter once after each line:
if guess == number:
print('Congratulations! You guessed it.')
elif guess < number:
pass # Your code here
else:
pass # Your code here
elif
and else
must immediately follow the end of the if
block, or Python will assume that the block has closed without them.
if 1:
pass
<--- this line must be indented at the same level as the `pass`
else:
pass
In your code, the interpreter finishes the if
block when the indentation, so the elif
and the else
aren't associated with it. They are thus being understood as standalone statements, which doesn't make sense.
In general, try to follow the style guidelines, which include removing excessive whitespace.
The problem is the blank line you are typing before the else
or elif
. Pay attention to the prompt you're given. If it is >>>
, then Python is expecting the start of a new statement. If it is ...
, then it's expecting you to continue a previous statement.
In IDLE and the interactive python, you entered two consecutive CRLF which brings you out of the if statement. It's the problem of IDLE or interactive python. It will be ok when you using any kind of editor, just make sure your indentation is right.