我必须编写一个递归函数asterisk_triangle,它接受一个整数,然后返回一个由许多行组成的星号三角形.
作为一个例子,这是一个4行星号三角形.
*
**
***
****
我试过这个功能:
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
from lab05 import *
File "C:\Users\akumaukpo\Documents\CISC 106\LAB05\lab05.py", line 22
print i
^
解决方法:
块中的每个语句必须至少从块的开头缩进一个空格.代码中的print语句不会相对于包含它的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)
*
***
*****
*******
标签:python,recursion