首页 > 解决方案 > 用 n 行打印此模式的 Python 程序,其中 n 由用户输入。在此示例输出中,n = 6

问题描述

我试图锻炼一些代码,但我无法达到预期的输出。预期的输出如下所示:

输出

这是我尝试过的:

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()

标签: pythonpython-3.x

解决方案


这是您的代码的打印输出(当用户输入时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 = '')

这也有效并且看起来更好。


推荐阅读