我用C++编写了一个程序,它显示了一个星号金字塔(见下文),现在我想看看它是如何在Python中完成的,但并不像我想象的那么容易这将是。Python中的星号程序金字塔
有没有人试过这个,如果是的话,你能告诉我的代码会帮助吗?
在此先感谢。
*
***
*****
*******
*********
***********
*************
***************
我用C++编写了一个程序,它显示了一个星号金字塔(见下文),现在我想看看它是如何在Python中完成的,但并不像我想象的那么容易这将是。Python中的星号程序金字塔
有没有人试过这个,如果是的话,你能告诉我的代码会帮助吗?
在此先感谢。
*
***
*****
*******
*********
***********
*************
***************
def pyramid(rows=8):
for i in range(rows):
print ' '*(rows-i-1) + '*'*(2*i+1)
pyramid(8)
*
***
*****
*******
*********
***********
*************
***************
pyramid(12)
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***********************
您可以使用字符串倍增,像这样:
>>> for i in range(size):
... print '%s%s'%(' '*(size-(i-1)),'*'*((i*2)-1))
...
此代码不是很Python的,但它的可读性。看看休Bothewell的回答了压缩金字塔绘图功能:
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)
我建议以下功能:
pyramid()
或:
def pyramid(rows=8):
pyramid_width = rows * 2
for asterisks in range(1, pyramid_width, 2):
print("{0:^{1}}".format("*" * asterisks, pyramid_width))
然后尝试
pyramid(4)
或你可以尝试:
def pyramid(size=8):
for i in range(size):
row = '*'*(2*i+1)
print row.center(2*size)
还可以绘制一个钻石
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)
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
>>>
def pyramid(row):
for n in range(row):
print(' '*(n+1)+' '*(2*(row-n))+'x'+'x'*(2*n+1))
pyramid(row=8)
虽然我非常新的Python,所以这里是我如何解决它:
k=int(input("Enter the number of rows"))
for i in range(1,k):
print(' '*(k-i),'* '*(i))
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
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
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
#!/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:
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
$ 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 = 5
> print("\n".join((i*"*").center(n*2) for i in range(1, n*2, 2)))
*
***
*****
*******
*********
你怎么把它写在C++? – Jordan 2011-02-06 03:26:42
到目前为止你有什么,它怎么不工作? – 2011-02-06 03:26:51
看看这个[圣诞树](http://stackoverflow.com/a/34241421/389289) – zvone 2016-09-04 17:28:32