Пирамида звездочек программы на Python - PullRequest
5 голосов
/ 06 февраля 2011

Я написал программу на C ++, которая отображает пирамиду звездочки (см. Ниже), и теперь я хотел бы посмотреть, как это делается в Python, но это не так просто, как я думал, что будет.

Кто-нибудь пробовал это, и если да, не могли бы вы показать мне код, который поможет?

Заранее спасибо.

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

Ответы [ 12 ]

22 голосов
/ 06 февраля 2011
def pyramid(rows=8):
    for i in range(rows):
        print ' '*(rows-i-1) + '*'*(2*i+1)

pyramid(8)
       *
      ***
     *****
    *******
   *********
  ***********
 *************
***************

pyramid(12)
           *
          ***
         *****
        *******
       *********
      ***********
     *************
    ***************
   *****************
  *******************
 *********************
***********************
5 голосов
/ 06 февраля 2011

Или вы можете попробовать:

def pyramid(size=8):
    for i in range(size):
        row = '*'*(2*i+1)
        print row.center(2*size)
3 голосов
/ 06 февраля 2011

Вы можете использовать умножение строк следующим образом:

>>> for i in range(size):
...     print '%s%s'%(' '*(size-(i-1)),'*'*((i*2)-1))
...
2 голосов
/ 06 февраля 2011

Я бы предложил следующую функцию:

def pyramid(rows=8):
    pyramid_width = rows * 2
    for asterisks in range(1, pyramid_width, 2):
        print("{0:^{1}}".format("*" * asterisks, pyramid_width))

Затем попробуйте:

pyramid()

или с:

pyramid(4)
2 голосов
/ 06 февраля 2011

Этот код не очень питонический, но он читаемый.Посмотрите на ответ Хью Ботвелла о функции рисования компактной пирамиды:

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)
1 голос
/ 30 декабря 2017

Если вам нравятся списки:

> n = 5
> print("\n".join((i*"*").center(n*2) for i in range(1, n*2, 2)))

    *
   ***
  *****
 *******
*********
1 голос
/ 04 сентября 2016
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



     * 
    * * 
   * * * 
  * * * * 
 * * * * * 
  * * * * 
   * * * 
    * * 
     * 
0 голосов
/ 21 июня 2017
$ 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 
  *  
 *** 
*****
$ _
0 голосов
/ 12 декабря 2016
#!/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:
    *
   * *
  * * *
 * * * *
* * * * *
 * * * *
  * * *
   * *
    *
0 голосов
/ 09 августа 2016

Хотя я очень плохо знаком с Python, вот как я решил это:

k=int(input("Enter the number of rows"))
for i in range(1,k):
    print(' '*(k-i),'* '*(i))

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


...