用 python 建造一座 * 塔

chi*_*oco 1 python python-3.x

我正在解决这个挑战,其中根据给定的数字,它将显示每个奇数的星号(*)增量。基本上结果应该是,如果我运行下面的函数并将 n_floor 设置为 5,它应该显示下面的结果。我的代码以某种方式迭代每个楼层数并增加每个奇数的 * 但结果失败,但这是因为这些引号之间的星号间距是错误的。有什么想法/提示如何解决这个问题吗?

A。正确结果

['    *    ', '   ***   ', '  *****  ', ' ******* ', '*********']
Run Code Online (Sandbox Code Playgroud)

b. 我的脚本的结果如下:

['*', '***', '*****', '*******', '*********']
Run Code Online (Sandbox Code Playgroud)
def tower_builder(n_floor):
    a = '*'
    b = 1
    c= 0
    result = []
    num=range(1, n_floor+1)

    # * to increment by odd number
    for x in num:
        c = a
        result.append(c)
        a += str('**')
    return result
Run Code Online (Sandbox Code Playgroud)

and*_*sit 5

这是计算所需宽度的更好方法:

def tower_builder(n_floor):
    result = []
    width = (n_floor * 2) - 1
    for x in range(1, 2 * n_floor, 2):
        stars = x * '*'
        line = stars.center(width)
        result.append(line)
    return result


assert tower_builder(1) == ['*']
assert tower_builder(2) == [' * ', '***']
assert tower_builder(3) == ['  *  ', ' *** ', '*****']
assert tower_builder(4) == ['   *   ', '  ***  ', ' ***** ', '*******']
assert tower_builder(5) == ['    *    ', '   ***   ', '  *****  ', ' ******* ', '*********']
Run Code Online (Sandbox Code Playgroud)