[Tutor] Syntax error while attempting to type in multiline statements in the interactive interpreter

Alan Gauld alan.gauld at yahoo.co.uk
Sat Feb 4 18:44:51 EST 2017


On 04/02/17 22:56, boB Stepp wrote:
> On Sat, Feb 4, 2017 at 4:40 PM, David <bouncingcats at gmail.com> wrote:
>> On 5 February 2017 at 09:02, boB Stepp <robertvstepp at gmail.com> wrote:
>>> py3: a
>>> ['Mary', 'had', 'a', 'little', 'lamb', 'break']
>>> py3: for w in a:
>>> ...     print(w)
>>> ... print('Huh?')
>>>   File "<stdin>", line 3
>>>     print('Huh?')
>>>         ^
>>> SyntaxError: invalid syntax
>>>
>>> I don't understand why this throws a SyntaxError.  If I wrap
>>> essentially the same code into a function it works:

Because you never completed the for loop. The interactive
interpreter tries to exercise each Python statement as it
goes but it cannot exercise the loop until it sees the end
of the block. Your second print statement is outside the
block but the block has not yet been executed so it sees
an error.

If you put a blank line it will work OK.

Alternatively if you put your code inside a function
definition it will understand it because it interprets
the full definition. Then when you call the function
it executes it as a whole. There is no discrepency in
what the interpreter is trying to interpret. But when
you do it at the top level  the interpreter is still
waiting for the end of the loop.

Does that help?

-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos




More information about the Tutor mailing list