Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中打印金字塔图案_Python - Fatal编程技术网

在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)打印: 但我想把它打印出来

我尝试使用递归函数在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(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,缩进):

如果n
indent*''*'*'
没有多大意义..那么您的输出在
*
字符之前缺少缩进。你认为哪里会出问题?仔细查看上一个
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:

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