Asterisks Triangle in Python

I am trying to create a program that allows me to make a "pyramid" or "triangle" using asterisks, in the Python program. I've already started the code, but can't seem to figure it out.

Here's the code I've managed to figure out:

    def triangle():
            totalRows = int(eval(input("How big? ")))
            for currentRows in range(1,totalRows+1):
                for currentCol in range (1, currentRows+1):
                            print("*", end = " ")
    triangle()

The end result is supposed to mirror this!

How big? 1
* 
------------------------------------------------------
How big? 2
 * 
* * 
------------------------------------------------------ 
How big? 3
  * 
 * * 
* * * 
------------------------------------------------------ 

Upvotes: 2

Views: 22417

Answers (10)

vibhuti singh
vibhuti singh

Reputation: 1

def pypart2(n): 
    k = 2*n-2
    for i in range(0, n):  
        for j in range(0, k): 
            print(end=" ") 
        k=k-1
        for j in range(0, i+1):
            print("* ", end="")          
        print("\r") 


n = 5
pypart2(n) 

Upvotes: -1

Mohammad mekawy
Mohammad mekawy

Reputation: 13

kiko="*"

empty=" "

def star(n):

    for i in range(n):
        print((n-i-1)*empty+(i+i+1)*kiko)
star(5)

Upvotes: 1

iftekhar
iftekhar

Reputation: 1

it can be done in just few steps:

def main():

    rows = input(" enter the number of rows : ")
    for i in range (rows):
        print ' '*(rows-i-1) + '*'*(2*i+1)
main()

Upvotes: 0

Stefan Todorovic
Stefan Todorovic

Reputation: 1

Imagine you have "blocks" of stars and space. Now add them on a canvas. This is Python. It glues objects together in this particular case

This code prints a diamond, the first loop is the upper half, the second loop is the lower half. Note that i had to make new variables(objects) for the second loop.

Hope this helps guys :)

star = "*"
space = "." # dots are for presentation purposes
rows = 10
star_counter = 1
space_counter = rows
for i in range(rows):
    print((space * (space_counter - 1 )) + (star * star_counter) +
    (star * (star_counter - 1)) + (space * (space_counter - 1)) )
    star_counter += 1
    space_counter -= 1

star_counter_new = (rows - 1) # one row less for the lower triangle
                             # the upper triangle takes the base row
                             # that's why rows - 1
space_counter_new = 1
for j in range(rows - 1): # same goes here
    print((space * (space_counter_new)) + (star * (star_counter_new)) +
    (star * (star_counter_new - 1)) + (space * (space_counter_new )))
    space_counter_new += 1
    star_counter_new -= 1

Upvotes: 0

Stind
Stind

Reputation: 1

def triangle(height):
    maxstars = 1+ 2*(height -1)
    spaces = int(maxstars/2)
    for i in range(0,height):
        print("  " * spaces   +"*" * (1+ 2*i))
        spaces = spaces -1

number = int(input("Please enter height of triangle: "))
triangle(number)

Upvotes: 0

Noah Smith
Noah Smith

Reputation: 101

Woah, guys, you are going at it from a really complicated point of view! why don'y you just use this program? :

asterisknum = int(raw_input('How many asterisks? Input here: '))
base = 0
if asterisknum % 2 == 0:
  print ('Added 1 to even number')
  asterisknum = asterisknum + 1
while asterisknum != -1 :
  print (' ' * base + '*' * asterisknum)
  base = base + 1
  asterisknum = asterisknum - 2
raw_input('Press <Enter> to exit')

I just made this program to work once, but I used the extremely simple parts of python that everybody should know. It could be tweaked to work again in the same program, or whatever...

Upvotes: 0

Don Question
Don Question

Reputation: 11614

def xmastree(maxwidth):
    for i in xrange(1,maxwidth,2):
        print '{0}'.format('*'*i).center(maxwidth)

or:

def xmastree2(maxrows):
    for i in xrange(1,maxrows*2,2):
        print '{0}'.format('*'*i).center(maxrows*2)

hmm, still no response, maybe not generic enough ? ok try this ;-) :

def triangle(pattern, n):   
    maxwidth = n*len(pattern)*2
    for i in xrange(1,n*2+1,2):
        print '{0}'.format(pattern*i).center(maxwidth)

>>> triangle(' ^', 5)
          ^         
        ^ ^ ^       
      ^ ^ ^ ^ ^     
    ^ ^ ^ ^ ^ ^ ^   
  ^ ^ ^ ^ ^ ^ ^ ^ ^ 

Upvotes: 0

Ziaunys
Ziaunys

Reputation: 76

    def build_pyr(depth):
            rows = [ (depth-i)*' ' + i*2*'*' + '*'   for i in range(depth-1) ]
            for i in rows:
                    print i

This works, however, it adds 2n + 1 asterisks at each depth. Just remove the + 1 asterisks from the list comprehension and add an initial asterisk to the row list before hand.

Upvotes: 1

Jorge Aranda
Jorge Aranda

Reputation: 2080

Slight modification to RParadox's solution to match requirement:

for i in range(totalRows + 1):
    numWhite = totalRows - i
    print ' ' * numWhite + '* ' * i

Upvotes: 6

RParadox
RParadox

Reputation: 6851

n = 10                                                                          
for i in range(n-1):                                                            
    numwhite = n-i                                                              
    print ' '*numwhite + '*'*i + '*'*i  



         **
        ****
       ******
      ********
     **********
    ************
   **************
  ****************

Upvotes: 2

Related Questions