在Python中打印金字塔图案
我尝试使用递归函数在Python中打印倒置的金字塔,同时也使用缩进。到目前为止,我得到的是:在Python中打印金字塔图案,python,Python,我尝试使用递归函数在Python中打印倒置的金字塔,同时也使用缩进。到目前为止,我得到的是: def printStars(n, indent): if n == 0: return elif n == 1: print(indent * ' ' * '*') else: print(n * '*' + indent * ' ') printStars(n-2,indent) printStars(10,2)打印: 但我想把它打印出来
def printStars(n, indent):
if n == 0:
return
elif n == 1:
print(indent * ' ' * '*')
else:
print(n * '*' + indent * ' ')
printStars(n-2,indent)
printStars(10,2)打印:
但我想把它打印出来:
**********
********
******
****
**
任何帮助都将不胜感激
编辑:
我现在有:
def printStars(n, indent):
if n == 0:
return
elif n == 1:
print(n)
else:
print(indent * ' ' + n * '*')
printStars(n-2,indent)
它识别金字塔,但方式不正确。假设您的输入是基本大小,在这种情况下,我们首先需要解决偶数或奇数问题
def pyramid(size):
if (size%2 == 0): #even
print '*' * size
i = 1
while i < size/2:
str1 = (' ' * i)
str2 = ( '*' * (size - 2*i))
print str1 + str2 + str1
i+=1
else:
print '*' * size
i = 1
while i < size/2:
str1 = (' ' * i)
str2 = ( '*' * (size - 2*i))
print str1 + str2 + str1
i+=1
str1 = (' ' * i)
print str1+'*'+str1
def棱锥体(大小):
如果(大小%2==0):#偶数
打印“*”*尺寸
i=1
而i
我没有看到输入需要缩进,但这可以很容易地融入到代码中。认为这是一个很好的练习来理解这个问题,试图用我的例子作为指导。
def printStars(n, indent):
if n == 0:
return
elif n == 1:
print(indent * ' ' + '*')
else:
print(indent * ' ' + n * '*')
printStars(n - 2, indent + 1)
代码的主要区别是什么?函数调用的参数,以及当n==1时应该发生的情况。一个似乎有效的解决方案是:
def stars_pyramid(n, indent):
if n <= 0:
return
s = '*' * n
i = indent * ' '
print i + s
stars_pyramid(n-2, indent+1)
n = 10
indent = 0
stars_pyramid(n, indent) outputs:
**********
********
******
****
**
def星形_棱锥体(n,缩进):
如果nindent*''*'*'
没有多大意义..那么您的输出在*
字符之前缺少缩进。你认为哪里会出问题?仔细查看上一个print()
function.n*'*'+indent*''在您的*之前注意到前面有任何缩进吗?我解决了缩进问题,现在我只需要帮助弄清楚如何使图案成为中心棱锥。printStars(n-2,indent+1)
可能?缩进必须始终为0才能开始。虽然我刚刚意识到,您似乎希望能够输入不同的缩进值…更正,缩进不必为0,但在本例中几乎没有区别
def stars_pyramid(n, indent):
if n <= 0:
return
s = '*' * n
i = indent * ' '
print i + s
stars_pyramid(n-2, indent+1)
n = 10
indent = 0
stars_pyramid(n, indent) outputs:
**********
********
******
****
**