松树程序间距不正确

时间:2015-11-10 16:16:36

标签: python python-3.x python-3.4

我正在创建一个绘制松树的程序,间距已关闭,我不知道如何解决它。

目前,代码如下:

def print_shifted_triangle(n, m, symbol):
    p1 = " "
    p2 = symbol
    number_of_asterisks = 1
    number_of_spaces = n-1
    for i in range(1, n+1):
        triangle = p1*m + p1*number_of_spaces + p2*number_of_asterisks
        print(triangle)
        number_of_asterisks = number_of_asterisks+2
        number_of_spaces = number_of_spaces-1


def print_pine_tree(n, symbol):
    for i in range(2,n+2):
        print_shifted_triangle(i,0,symbol)

def main():
    symbol = input("Please enter a symbol: ")
    n = int(input("How many triangles? "))
    print_pine_tree(n, symbol)

main()

当我输入符号@和n为3时,它会打印出来:

 @
@@@
  @
 @@@
@@@@@
   @
  @@@
 @@@@@
@@@@@@@

如何对齐间距以使其变为这样?

   @
  @@@
   @
  @@@
 @@@@@
   @
  @@@
 @@@@@
@@@@@@@

1 个答案:

答案 0 :(得分:-1)

你应该知道最后一个元素长度(或预测)。比你可以使用text.center(last_elem_length,'')。

def print_pine(n, symbol):
    pine_list = [[x*symbol+symbol for x in range(n+y) if x % 2 == 0] for y in range(n)]
    max_len = len(pine_list[-1][-1])
    for pine in pine_list:
        for row in pine:
            print(row.center(max_len, ' '))

print_pine(5, '@')

暂时存储在列表中,当我们知道最后一个元素的长度时,将在末尾打印“行”。

    @    
   @@@   
  @@@@@  
    @    
   @@@   
  @@@@@  
    @    
   @@@   
  @@@@@  
 @@@@@@@ 
    @    
   @@@   
  @@@@@  
 @@@@@@@ 
    @    
   @@@   
  @@@@@  
 @@@@@@@ 
@@@@@@@@@