def triangles(n): if not n & 1: raise ValueError('n must be odd') print_diamond(0, n, n >> 1) def print_diamond(start, stop, midpoint): if start < stop: if start <= midpoint: print(' ' * (midpoint - start) + '* ' * ((start << 1) + 1)) else: print(' ' * (start - midpoint) + '* ' * ((stop - start << 1) - 1)) print_diamond(start + 1, stop, midpoint)