On Sun, Apr 4, 2010 at 3:15 PM, Brian Drwecki <drwe...@gmail.com> wrote: > > As for the exact error code....here it is. > >>>> > while True: > reply = raw_input('Enter text:') > if reply == 'stop': > break > elif not reply.isdigit( ): > print 'Bad!' * 8 > else: > print int(reply) ** 2 > print 'bye' > SyntaxError: invalid syntax (note it highlights the print code)... > > This works!!! >>>> print'bye' > bye >>>> >
the interactive interpreter is a comparatively simple machine. Notably, it expects you to type only a single statement at a time. It may be a compound statement or a simple statement, but it must be only one statement. Your code, at the top level consists of two statements, a 'while' statement (which is compound) and a print statement. The interpreter expects only a single statement, and complains when it finds the second one: In [2]: if True: ...: print "inside statement one" ...: print "inside statement two" ------------------------------------------------------------ File "<ipython console>", line 3 print "inside statement two" ^ SyntaxError: invalid syntax In [3]: If you embed these two statements inside a single compound statement (whether that is a loop, conditional, function, whatever) the interpreter will stop complaining again, since the top-level statement again consists of only a single statement: In [8]: if True: ...: if True: ...: print "sub-statement one" ...: print "sub-statement two" ...: sub-statement one sub-statement two In [9]: Note that when interpreting a python script, there is no such limitation, and multiple top-level statements are perfectly fine. I haven't read the source, but my guess is that when parsing python source code, the parser uses a StatementList AST node as the root to parse a list of statements, while the interactive interpreter doesn't create this AST node. That's why it's limited to a single statement at a time. HTH, Hugo _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor