What Does End=' ' Exactly Do?

So, I'm struggling trying to understand this kinda simple exercise

def a(n):
    for i in range(n):
        for j in range(n):
            if i == 0 or i == n-1 or j == 0 or j == n-1:
                print('*',end='')
            else:
                print(' ',end='')
        print()

which prints an empty square. I tought I could use the code

            print("*", ''*(n-2),"*")

to print the units in between the upper and the lower side of the square but they won't be aligned to the upper/lower side ones, which doesn't happen if you run the first code... so... could this be because of end='' or print() (would you be so kind and tell me what do they mean?)?

3

6 Answers

Check the reference page of print. By default there is a newline character appended to the item being printed (end='\n'), and end='' is used to make it printed on the same line.

And print() prints an empty newline, which is necessary to keep on printing on the next line.

EDITED: added an example.
Actually you could also use this:

def a(n):
    print('*' * n)
    for i in range(n - 2):
        print('*' + ' ' * (n - 2) + '*')
    if n > 1:
        print('*' * n) 
2

In Python 3.x, the end=' ' is used to place a space after the displayed string instead of a newline.

please refer this for a further explanation.

1
spam = ['apples', 'bananas', 'tofu', 'cats']
    i = 0
    for i in range(len (spam)):
        if i == len(spam) -1:
            print ('and', spam[i])
        elif i == len (spam) -2:
            print (spam [i], end=' ')
        else:
            print (spam [i], end=', ')

So I'm new to this whole coding thing, but I came up with this code. It's probably not as sophisticated as the other stuff, but it does the job.

spam = ['apples', 'bananas', 'tofu', 'cats']    
def fruits():
    i = 0
    while i != len(spam):
        if len(spam) != i :
            print ('and', spam[i])
            i += 1   
 fruits()  

try this!

print() uses some separator when it has more than one parameter. In your code you have 3 ("" is first, ''(n-2) - second, "*" -third). If you don't want to use separator between them add sep='' as key-word parameter.

print("*", ' '*(n-2), "*", sep='') 

use this to understand

for i in range(0,52):
    print(5*"fiof" ,end=" ")

just put different things here in end and also use with sep

print('\n'.join('*{}*'.format((' ' if 0<row<n-1 else '*')*n-2) for row in range(n)))
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Chloe Bennett

Chloe Bennett

Culture, Media & Entertainment Columnist

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.

Share this article
Twitter Facebook Pinterest