Reputation: 471
I've written a program in C++ that displays a pyramid of asterisk (see below) and now I'd like to see how it's done in Python but it's not as easy as I'd thought it would be.
Has anyone tried this and if so could you show me code that would help out?
Thanks in advance.
*
***
*****
*******
*********
***********
*************
***************
Upvotes: 5
Views: 54896
Reputation: 35
user_input = input("How many rows do you want to print? \n")
def stars(a):
size = int(a)
for i in range(1, size+1):
print(" "*(size-i),"*"*(i*2-1))
stars(user_input)
How many rows do you want to print?
20
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***********************
*************************
***************************
*****************************
*******************************
*********************************
***********************************
*************************************
***************************************
Upvotes: 1
Reputation: 29
n=4
m = (2*n)-2
for i in range(0, m):
for j in range(0, m):
print(end=" ")
m = m - 1 # decrementing m after each loop
for j in range(0, i + 1):
# printing full Triangle pyramid using stars
print("* ", end=' ')
print(" ")
*
* *
* * *
Upvotes: 0
Reputation: 11573
If you like list comprehensions:
> n = 5
> print("\n".join((i*"*").center(n*2) for i in range(1, n*2, 2)))
*
***
*****
*******
*********
Upvotes: 2
Reputation: 118
$ cat tree.py
def line(n, i):
line = ''
for j in range(n - i - 1):
line += ' '
for j in range(2 * i + 1):
line += '*'
for j in range(n - i - 1):
line += ' '
return line
def tree(n):
for i in range(n):
line_ = line(n, i)
print(line_)
def run():
tree(3)
if __name__ == '__main__':
run()
$ python3 tree.py
*
***
*****
$ _
Upvotes: 0
Reputation: 1
#!/usr/bin/python
for i in range(1,6):
for j in range(1,i+1):
print "*",
print
O/P:
===
*
* *
* * *
* * * *
* * * * *
2)
#!/usr/bin/python
for i in range(1,6):
for j in range(1,7-i):
print "*",
print
O/P:
* * * * *
* * * *
* * *
* *
*
3)
#!/usr/bin/python
for i in range(1,6):
for j in range(1,6-i):
print "",
for k in range(1,i+1):
print "*",
print
O/P:
*
* *
* * *
* * * *
* * * * *
4)
#!/usr/bin/python
for i in range(1,6):
for j in range(1,1+i):
print "",
for k in range(1,7-i):
print "*",
print
O/P:
* * * * *
* * * *
* * *
* *
*
5)
#!/usr/bin/python
for i in range(1,6):
for j in range(1,6-i):
print "",
for k in range(1,i+1):
print "*",
print
for i in range(1,5):
for j in range(1,1+i):
print "",
for k in range(1,6-i):
print "*",
print
O/P:
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
Upvotes: -2
Reputation: 1
You can also draw a DIAMOND
def pyramid(r):
for i in range(r):
print (" "*(r-i-1) + "*"*(2*i+1))
for i in range(r-1,-1,-1):
print (' '*(r-i-1) + "*"*(2*i+1))
n=int(input("Enter no of rows:"))
pyramid(n)
pyramid(10)
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
>>>
Upvotes: -1
Reputation: 19
Pyramid, Inverted Pyramid and Diamond Rhombus in Python:
Pyramid
i=1
j=5
while i<=5:
print((j*' ')+i*'* ')
j=j-1
i=i+1
*
* *
* * *
* * * *
* * * * *
Inverted Pyramid
i=1
j=5
while i<=5:
print((i*' ')+j*'* ')
j=j-1
i=i+1
* * * * *
* * * *
* * *
* *
*
Diamond Rhombus
i=1
j=5
while i<=5:
print((j*' ')+i*'* ')
while j<=5 & i==5:
print(((j+1)*' ')+(5-j)*'* ')
j=j+1
j=j-1
i=i+1
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
Upvotes: 1
Reputation: 4158
Though I am very much new to python, so here is how I solved it:
k=int(input("Enter the number of rows"))
for i in range(1,k):
print(' '*(k-i),'* '*(i))
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
Upvotes: -1
Reputation: 97
def pyramid(row):
for n in range(row):
print(' '*(n+1)+' '*(2*(row-n))+'x'+'x'*(2*n+1))
pyramid(row=8)
Upvotes: -1
Reputation: 1220
I would suggest the following function:
def pyramid(rows=8):
pyramid_width = rows * 2
for asterisks in range(1, pyramid_width, 2):
print("{0:^{1}}".format("*" * asterisks, pyramid_width))
Then try with:
pyramid()
or with:
pyramid(4)
Upvotes: 2
Reputation: 51
Or you could try:
def pyramid(size=8):
for i in range(size):
row = '*'*(2*i+1)
print row.center(2*size)
Upvotes: 5
Reputation: 298106
This code isn't very pythonic, but it's readable. Look at Hugh Bothewell's answer for a compact pyramid drawing function:
def drawPyramid(rows):
result = ''
for i in xrange(rows):
row = ''
row += ' ' * (rows - i - 1)
row += '*' * (2 * i + 1)
result += row + '\n'
return result
print drawPyramid(20)
Upvotes: 2
Reputation: 56624
def pyramid(rows=8):
for i in range(rows):
print ' '*(rows-i-1) + '*'*(2*i+1)
pyramid(8)
*
***
*****
*******
*********
***********
*************
***************
pyramid(12)
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***********************
Upvotes: 22
Reputation: 8951
You can use string multiplication like so:
>>> for i in range(size):
... print '%s%s'%(' '*(size-(i-1)),'*'*((i*2)-1))
...
Upvotes: 3