0
votes

In Python, I'd like to print a diamond shape of asterisks *:

  • with $ at the top half of the diamond (upper pyramid) where there isn't a *, and
  • with & at the bottom half of the diamond (lower pyramid) where there isn't a *.

So far, I only know how to make a pyramid that is right side up:

def pyramid(n):
   for i in range(n):
       row = '*'*(2*i+1)
       print(row.center(2*n))

For example, if the function called was print shape(7), then it would print [this image].

Any ideas?

1
What's the expected behavior for pyramid(1)? - NightShadeQueen
@NightShadeQueen The function I'm trying to write should produce the following when n=1 $$ ** && Each pair of symbols would be in a row above the other, forming 3 rows with a pair in each row but I'm unable to show that in my comment. However, if you're referring to the function I've written primarily for the pyramid, currently it would produce just * - Shagun Chhikara
Seems we can start a library of code to print all those shapes of asterisks used as beginner's exercise: Pyramid, M, Triangels, Diamond, Hollow square - cfi

1 Answers

1
votes
def shape(n):
    for i in range(2*n+ 1):
        if (i < n):
            print "$" * (n - i) + "*" * 2 * i + "$" * (n - i)
        elif i == n:
            print "*" * 2 * n
        elif i > n:
            print "&" * (i - n) + "*" * 2 *  (2* n - i) + "&" * (i - n)