0

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?

Michael Currie
  • 13,721
  • 9
  • 42
  • 58
Shagun Chhikara
  • 153
  • 1
  • 3
  • 11
  • What's the expected behavior for `pyramid(1)`? – NightShadeQueen Jul 12 '15 at 03:51
  • @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 Jul 12 '15 at 03:55
  • Seems we can start a library of code to print all those shapes of asterisks used as beginner's exercise: [Pyramid](http://stackoverflow.com/questions/33179423/upside-down-pyramid-py), [M](http://stackoverflow.com/questions/28394149/draw-an-m-shaped-pattern-with-nested-loops), [Triangels](http://stackoverflow.com/questions/26352412/python-print-a-triangular-pattern-of-asterisks), [Diamond](http://stackoverflow.com/questions/31364162/print-shape-in-python), [Hollow square](http://stackoverflow.com/questions/16108446/drawing-a-hollow-asterisk-square) – cfi Oct 16 '15 at 21:17

1 Answers1

1
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)
Erik Godard
  • 5,930
  • 6
  • 30
  • 33