Nested for loops and print statements

Terry Reedy tjreedy at udel.edu
Mon Sep 26 02:47:26 EDT 2016


On 9/26/2016 1:59 AM, Cai Gengyang wrote:
> Why is it that you need a print() at the end to create the table for example 1:
>
> Example 1 ---
>
>>>> for row in range(10):
>     for column in range(10):
>         print("*",end=" ")
>     # Print a blank line for next row
>     print()

These indents are either 4 or 8 spaces.

The print provides a carriage return.
Each line ends with a space.

> * * * * * * * * * *
> * * * * * * * * * *
> * * * * * * * * * *
> * * * * * * * * * *
> * * * * * * * * * *
> * * * * * * * * * *
> * * * * * * * * * *
> * * * * * * * * * *
> * * * * * * * * * *
> * * * * * * * * * *

One can avoid both extra print and spaces with

for row in range(10):
     for column in range(10):
         print("*", end=" " if column<9 else '\n')

# or
for row in range(10):
     print(' '.join(['*']*10))
# or
print((' '.join(['*']*10)+'\n')*10)

# or
for row in range(10):
     print('* '*9 + '*')
# or
print(('* '*9 + '*\n')*10)


> but not for Example 2 ---
>
> for row in range(10):
>     print("*",end=" ")
>
> * * * * * * * * * *
>
> When I try to do example 1 without the print() statement at the end, I get this error :
>
> for row in range(10):
>     for column in range(10):
> 	print("*",end=" ")

These indents are 4 spaces and 1 tabs.

> SyntaxError: inconsistent use of tabs and spaces in indentation

Because you mixed tabs and spaces.  Has nothing to do with print statement.


-- 
Terry Jan Reedy




More information about the Python-list mailing list