This is for somebody else's hackerrank problem. This notebook explores some ways for doing the same thing (without even having a good definition of the problem).


In [1]:
n = 4

In [2]:
def foo(n):
    for i in range(n):
        for _ in range(n - i - 1):
            print(' ', end='')
        for _ in range(i+1):
            print('#', end='')
        print()

In [3]:
foo(n)


   #
  ##
 ###
####

In [4]:
def foo(n):
    for i in range(n):
        for j in range(n):
            if j < n - i - 1:
                print(' ', end='')
            else:
                print('#', end='')
        print()

In [5]:
foo(n)


   #
  ##
 ###
####

In [6]:
def foo(n):
    for i in range(n):
        for j in range(n):
            if j < n - i - 1:
                c = ' '
            else:
                c = '#'
            print(c, end='')
        print()

In [7]:
foo(n)


   #
  ##
 ###
####

In [8]:
def foo(n):
    for i in range(n):
        for j in range(n):
            c = ' ' if j < n - i - 1 else '#'
            print(c, end='')
        print()

In [9]:
foo(n)


   #
  ##
 ###
####

In [10]:
def foo(n):
    for i in range(n):
        for j in range(n):
            print(' ' if j < n - i - 1 else '#', end='')
        print()

In [11]:
foo(n)


   #
  ##
 ###
####

In [12]:
def foo(n):
    for i in range(n):
        line = []
        for j in range(n):
            line.append(' ' if j < n - i - 1 else '#')
        print(''.join(line))

In [13]:
foo(n)


   #
  ##
 ###
####

In [14]:
def foo(n):
    for i in range(n):
        line = [
            ' ' if j < n - i - 1 else '#'
            for j in range(n)
        ]
        print(''.join(line))

In [15]:
foo(n)


   #
  ##
 ###
####

In [16]:
def foo(n):
    for i in range(n):
        line = (
            ' ' if j < n - i - 1 else '#'
            for j in range(n)
        )
        print(''.join(line))

In [17]:
foo(n)


   #
  ##
 ###
####

In [18]:
def foo(n):
    for i in range(n):
        print(''.join(' ' if j < n - i - 1 else '#' for j in range(n)))

In [19]:
foo(n)


   #
  ##
 ###
####

In [20]:
def foo(n):
    line = [' ' for _ in range(n)]
    for i in range(n):
        line[n - i - 1] = '#'
        print(''.join(line))

In [21]:
foo(n)


   #
  ##
 ###
####

In [22]:
def foo(n):
    for i in range(1, n+1):
        print((n-i) * ' ' + i * '#')

In [23]:
foo(n)


   #
  ##
 ###
####

In [24]:
'%*s' % (10, 'hello')


Out[24]:
'     hello'

In [25]:
def foo(n):
    for i in range(n):
        print('%*s' % (n, (i+1) * '#'))

In [26]:
foo(n)


   #
  ##
 ###
####

In [27]:
def foo(n):
    for n_hashes in range(1, n+1):
        print('%*s' % (n, n_hashes * '#'))

In [28]:
foo(n)


   #
  ##
 ###
####

In [ ]:
from functools import partial

In [ ]:
prompt = 'how many:'
get_values = (int(s) for s in iter(partial(input, prompt), 'quit'))
for n in get_values:
    foo(n)


how many:2
 #
##
how many:6
     #
    ##
   ###
  ####
 #####
######