2015-11-06 2 views
-1

Мне нужно создать треугольник со звездочкой с одной функцией, но мне нужно, чтобы сделать их таким образом:треугольнику звездочек в Python

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

До сих пор у меня есть это, но я оказался в бесконечном цикле.

def triangle (n): 
    i = 0 
    x = n + 1 
    while i<n: 
     print ("*"*(x)) 
     x = x - 1 
     i=i+1 
     if i == n: 
      while i != 0: 
       print ("*"*(x)) 
       x = x + 1 
       i=i-1 
    return ("*") 

n=int(input("How many * would you like to see?")) 
+1

Проблема возникает после того, как 'i + = 1' becam es 'i == n', он вводит оператор if и уменьшает' i'. В следующий раз 'while i

ответ

1

Вы также можете просто использовать два range() функций Python, чтобы сделать это следующим образом:

for length in range(5, 0, -1) + range(2, 6): 
    print '*' * length 

или с помощью Python 3:

for length in list(range(5, 0, -1)) + list(range(2, 6)): 
    print('*' * length) 

Так как функции вы бы:

def triangle(n): 
    for length in list(range(n, 0, -1)) + list(range(2, n+1)): 
     print('*' * length) 

n = int(input("How many * would you like to see? ")) 
triangle(n) 
+0

Для python 3 может быть более чистым использовать' itertools.chain': 'из цепочки импорта itertools', а затем' для длины в цепочке (диапазон (n, 0, -1), диапазон (2, n + 1)): '(также обратите внимание на +1, иначе дно пирамиды останавливает линию раньше). – Duncan

+0

Thank, last edit случайно удалил неправильный +1. Также я пытался не использовать импорт. –

+0

Один цикл: 'для i в диапазоне (-n + 1, n): print ('x' * (abs (i) +1))': ^) –

Смежные вопросы