[英]How to recreate pyramid triangle?
我必须编写一个递归函数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 <module>
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)
*
***
*****
*******
如果您需要递归做金字塔,则可能需要做这样的事情。
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)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.