问题
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.
*
***
*****
*******
*********
***********
*************
***************
回答1:
def pyramid(rows=8):
for i in range(rows):
print ' '*(rows-i-1) + '*'*(2*i+1)
pyramid(8)
*
***
*****
*******
*********
***********
*************
***************
pyramid(12)
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***********************
回答2:
Or you could try:
def pyramid(size=8):
for i in range(size):
row = '*'*(2*i+1)
print row.center(2*size)
回答3:
You can use string multiplication like so:
>>> for i in range(size):
... print '%s%s'%(' '*(size-(i-1)),'*'*((i*2)-1))
...
回答4:
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)
回答5:
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)
回答6:
If you like list comprehensions:
> n = 5
> print("\n".join((i*"*").center(n*2) for i in range(1, n*2, 2)))
*
***
*****
*******
*********
回答7:
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
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
回答8:
$ 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
*
***
*****
$ _
回答9:
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(" ")
*
* *
* * *
回答10:
def pyramid(row):
for n in range(row):
print(' '*(n+1)+' '*(2*(row-n))+'x'+'x'*(2*n+1))
pyramid(row=8)
回答11:
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))
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
回答12:
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)
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
>>>
回答13:
#!/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