Я должен написать рекурсивную функцию asterisk_triangle
которая принимает целое число, а затем возвращает треугольник звездочки, состоящий из множества строк.
В качестве примера это четырехстрочный треугольник звездочки.
*
**
***
****
Я пробовал эту функцию:
def asterix_triangle(depth):
rows = [ (depth-i)*' ' + i*2*'*' + '*' for i in range(depth-1) ]
for i in rows:
print i
И следующая функция:
def asterisk_triangle(rows=n):
pyramid_width = n * 2
for asterisks in range(1, pyramid_width, 2):
print("{0:^{1}}".format("*" * asterisks, pyramid_width))
И никто не работал. Я должен сделать tests.py
для проверки функций, и я получаю ошибки, например
Traceback (most recent call last):
File "C:\Users\akumaukpo\Documents\CISC 106\LAB05\lab05 _test.py", line 19, in <module>
from lab05 import *
File "C:\Users\akumaukpo\Documents\CISC 106\LAB05\lab05.py", line 22
print i
^
Каждый оператор в блоке должен иметь отступ по крайней мере от одного места от начала блока. В заявлении для печати в коде не отступ относительно к for
блока оно содержится в, поэтому у вас есть ошибка.
Попробуй это:
def asterix_triangle(depth):
rows = [ (depth-i)*' ' + i*'*' + '*' for i in range(depth) ]
for i in rows:
print i
Который дает:
>>> asterix_triangle(4)
*
**
***
****
РЕДАКТИРОВАТЬ:
Я просто понял, что ваш желаемый результат состоит в том, чтобы иметь обе половины треугольника. Если это так, просто зеркалируйте строку, добавив то же самое в правую часть строки:
def asterix_triangle(depth):
rows = [ (depth-i)*' ' + i*'*' + '*' + i*'*' for i in range(depth) ]
for j in rows:
print j
Выход:
>>> asterix_triangle(4)
*
***
*****
*******
Если вам нужно сделать пирамиду рекурсивно, вам, вероятно, нужно будет сделать что-то вроде этого.
def asterix_triangle(i, t=0):
if i == 0:
return 0
else:
print ' ' * ( i + 1 ) + '*' * ( t * 2 + 1)
return asterix_triangle(i-1, t + 1)
asterix_triangle(5)
Идея состоит в том, что вы используете две переменные. Один из них - это i
, который вычитается один раз при каждом вызове функции и используется для завершения цикла. Другая переменная используется для постепенного увеличения. Затем вы используете i
для печати количества пробелов и t
числа звезд.
Результатом будет:
*
***
*****
*******
*********
for i in range(10):
print((' '*(10-i-1))+(('*')*((2*i)-1)))
depth
в качестве пирамиды, как указано в вопросе. Возможно, вам придется взять тур /, чтобы прочитать, как ответить