使用n行打印此模式的Python程序,其中n由用户输入。在此示例输出中,n = 6

时间:2019-06-06 11:56:04

标签: python python-3.x

我尝试执行一些代码,但无法达到预期的输出。预期的输出如下所示:

output

这是我尝试过的:

n = int(input())
for row in range(1, n + 1):    
   print(' ' * (n - row), end = '')    
   for col in range(row, 0 , -1):
       print(col, end = ' ')
   print()

1 个答案:

答案 0 :(得分:2)

这是您的代码的打印输出(当用户输入6时):

     1 
    2 1 
   3 2 1 
  4 3 2 1 
 5 4 3 2 1 
6 5 4 3 2 1 

如您所见,顶部没有足够的空间。第一行现在有5个空格,但是它需要另一个5个空格才能将1一直推到最右边。第二行有4个空格,但需要另一个4。实际上,您需要在每一行的开头将空格数加倍。因此,只需将所需的空格数乘以2:

n = int(input())
for row in range(1, n + 1):    
   print(' ' * 2 * (n - row), end = '')    
   for col in range(row, 0 , -1):
       print(col, end = ' ')
   print()

您看到我添加到您的代码中的* 2吗?现在是打印输出

          1 
        2 1 
      3 2 1 
    4 3 2 1 
  5 4 3 2 1 
6 5 4 3 2 1 

这就是你想要的。

还有其他获取所需内容的方法。例如,您可以将单个空格替换为两个空格,而不是在该行代码中添加* 2

print('  ' * (n - row), end = '')

那也行得通,看起来更好。