python中的星号三角形

python中的星号三角形,python,ascii-art,Python,Ascii Art,我必须编写一个递归函数asterisk_triangle,它接受一个整数,然后返回一个由那么多行组成的星号三角形 例如,这是一个四行星号三角形 * ** *** **** * ** *** **** **** *** ** * 我想出了这个函数: def asterisk_triangle(n): """ takes an integer n and then returns an asterisk triangle consisting o

我必须编写一个递归函数asterisk_triangle,它接受一个整数,然后返回一个由那么多行组成的星号三角形

例如,这是一个四行星号三角形

*
**
***
****
   *
  **
 ***
****
****
 ***
  **
   *
我想出了这个函数:

def asterisk_triangle(n):
    """
    takes an integer n and then returns an
    asterisk triangle consisting of (n) many lines
    """
    x = 1
    while (x <= n):
        print("*" * x)
        x = x + 1
    return
和一个倒转的星号三角形

*
**
***
****
   *
  **
 ***
****
****
 ***
  **
   *
我应该实现哪些功能


我尝试在函数之后使用reverse-string命令[:-1],但它不起作用。

我之前已经回答了相同的问题。请记住,您提到的函数都不是递归函数。您可以阅读更多关于递归的内容

这就是我提到的例子

Python3.X

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)
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)
这里有一个颠倒版本的递归函数

def upside_down_asterix_triangle(i, t=0):
    if i == 0:
        return 0
    else:
        print(' ' * ( t + 1 ) + '*' * ( i * 2 - 1 ))
        return upside_down_asterix_triangle( i - 1, t + 1 )

upside_down_asterix_triangle(5)
def upside_down_asterix_triangle(i, t=0):
    if i == 0:
        return 0
    else:
        print ' ' * ( t + 1 ) + '*' * ( i * 2 - 1 )
        return upside_down_asterix_triangle( i - 1, t + 1 )

upside_down_asterix_triangle(5)
python2.X

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)
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)
这里有一个颠倒版本的递归函数

def upside_down_asterix_triangle(i, t=0):
    if i == 0:
        return 0
    else:
        print(' ' * ( t + 1 ) + '*' * ( i * 2 - 1 ))
        return upside_down_asterix_triangle( i - 1, t + 1 )

upside_down_asterix_triangle(5)
def upside_down_asterix_triangle(i, t=0):
    if i == 0:
        return 0
    else:
        print ' ' * ( t + 1 ) + '*' * ( i * 2 - 1 )
        return upside_down_asterix_triangle( i - 1, t + 1 )

upside_down_asterix_triangle(5)
编辑:显示在我的IDE中运行的脚本的屏幕截图

Edit2:添加了在Python3.x下工作的代码

Edit3:为Python3.X添加了迭代函数


你能不能不只是向后运行同一个循环?gunna把这个放在那里,但是这些函数目前不是递归的。不确定这是否是需求的核心部分,但可能是。每当我键入您提供给我的代码并运行它时,它就会在“print”@AkumaUkpo之后的第二个引号上出现语法错误。我用另一个非递归函数更新了帖子,并在我的计算机上显示了代码布局的屏幕截图。我拍摄了代码和错误消息的截图。我做错了什么@藤井还增加了另一个倒置金字塔的版本。很难说,也许您正在运行Python3.X?我建议您删除以前的代码,以确保它不是其他地方的类型。哦,对不起,我忘了提到,是的,我正在运行python 3.3.0@Fuji