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?)?
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) 2In 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.
1spam = ['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