print function and unwanted trailing space
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Sat Aug 31 07:16:33 EDT 2013
On Sat, 31 Aug 2013 10:17:23 +0200, candide wrote:
> What is the equivalent in Python 3 to the following Python 2 code:
>
> # -----------------------------
> for i in range(5):
> print i,
> # -----------------------------
>
> ?
>
> Be careful that the above code doesn't add a trailing space after the
> last number in the list,
Of course it does. Have you actually tried it? The interactive
interpreter is tricky, because you cannot directly follow a for-loop with
another statement. If you try, the interactive interpreter gives you an
indentation error. But we can work around it by sticking everything
inside an if block, like so:
py> if True:
... for i in range(5):
... print i,
... # could be pages of code here
... print "FINISHED"
...
0 1 2 3 4 FINISHED
Or you could stick the code inside an exec, which doesn't have the same
limitation as the interactive interpreter. This mimics the behaviour of
code in a file:
py> exec """for i in range(5):
... print i,
... print "FINISHED"
... """
0 1 2 3 4 FINISHED
The same results occur with any other Python 2.x, and indeed all the way
back to Python 1.5 and older.
> hence the following Python 3 code isn't strictly equivalent:
>
>
> # -----------------------------
> for i in range(5):
> print(i, end=' ') # <- The last ' ' is unwanted
> print()
The last space is exactly the same as you get in Python 2. But really,
who cares about an extra invisible space? In non-interactive mode, the
two are exactly the same (ignoring the extra print() call outside the
loop), but even at the interactive interpreter, I'd like to see the code
where an extra space makes a real difference.
--
Steven
More information about the Python-list
mailing list