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.
*
***
*****
*******
*********
***********
*************
***************
def pyramid(rows=8):
for i in range(rows):
print ' '*(rows-i-1) + '*'*(2*i+1)
pyramid(8)
*
***
*****
*******
*********
***********
*************
***************
pyramid(12)
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***********************
Or you could try:
def pyramid(size=8):
for i in range(size):
row = '*'*(2*i+1)
print row.center(2*size)
You can use string multiplication like so:
>>> for i in range(size):
... print '%s%s'%(' '*(size-(i-1)),'*'*((i*2)-1))
...
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)
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)
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
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
If you like list comprehensions:
> n = 5
> print("\n".join((i*"*").center(n*2) for i in range(1, n*2, 2)))
*
***
*****
*******
*********
$ 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
*
***
*****
$ _
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(" ")
*
* *
* * *
John Don
def pyramid(row):
for n in range(row):
print(' '*(n+1)+' '*(2*(row-n))+'x'+'x'*(2*n+1))
pyramid(row=8)
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))
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
user3416044
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)
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
>>>
sivaprasad
#!/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:
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
来源:https://stackoverflow.com/questions/4911341/pyramid-of-asterisks-program-in-python