用Python打印金字塔图案

2024-10-03 00:20:54 发布

您现在位置: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)打印:

^{pr2}$

但我想把它打印出来:

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

任何帮助都将不胜感激

编辑: 我现在有:

def printStars(n, indent):
  if n == 0:
      return
  elif n == 1:
      print(n)
  else:
      print(indent * ' ' + n * '*')
      printStars(n-2,indent)

它能识别金字塔,但方式不正确。在


Tags: 编辑returnifdef方式elseprintindent
3条回答
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 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

我没有看到输入需要缩进,但这可以很容易地考虑到代码中。把我的例子当作一个很好的练习来理解这个问题。在

相关问题 更多 >