Search code examples
pythonnested-loops

How to make pyramid of a string?


I want to make a pyramid of a string for an exercise. I just don't know how to do it. For example:

string = "these***are***just***random***words*"

and the pyramid I want to make is:

         t
        hes
       e***a
      re***ju
     st***rand
    om***words*

How do I do this?

def draw_pyramid(string, size):
    if size > 15:
        size = 15
    if size < 5:
        size = 5
    l = string * size
    for i in range(size + 1):
        stars = i
        p = l[0:stars]
        spaces = size - i
        print(" " * spaces + p)


def main():
    size = int(input("How many layers do you want it to be?: "))
    string = "these***are***just***random***words*"
    draw_pyramid(string, size)

if __name__ == '__main__':
    main()

Result:


         t
        th
       the
      thes
     these
    these*
   these**
  these***
 these***a
these***ar

Solution

  • You can use string.center() to get the strings nicely aligned in the center. To get the right characters from l I use a start and an end variable:

    def draw_pyramid(string, size):
        if size > 15:
            size = 15
        if size < 5:
            size = 5
        length = size * 2 - 1
        l = string * size
        start = 0
        end = 0
        for stars in range(1, size + 1):
            end += stars * 2 - 1
            p = l[start:end]
            start = end
            print(p.center(length))
    

    Output :

    How many layers do you want it to be?: 10
             t         
            hes        
           e***a       
          re***ju      
         st***rand     
        om***words*    
       these***are**   
      *just***random*  
     **words*these***a 
    re***just***random*