首页 > 解决方案 > 嵌套for循环构建“0”金字塔

问题描述

for i in range(0,7):
    for j in range(0, 7 - i):
        print(" ", end = "")
    for k in range(0, 2 * i + 1):
        print("0", end = "")
    print(" ")

我在网上看到这段代码构建一个包含“0”的金字塔,我很困惑为什么我需要在第一个循环的最底部添加 pint("")?

标签: pythonloopsnested-loops

解决方案


您正在使用printwithend=""逐个字符地构建行,而无需换行。

要构建金字塔,您需要在一行零之后跳到下一行,因此默认情况下print(" ")具有参数end='\n'

没有最后一次打印的输出:

       0      000     00000    0000000   000000000  00000000000 0000000000000

这是对代码的修改,以向您显示分隔符的位置:

for i in range(0,7):
    for j in range(0, 7 - i):
        print(" ", end = "-")
    for k in range(0, 2 * i + 1):
        print("0", end = "+")
    print("", end='=\n')

输出:

 - - - - - - -0+=
 - - - - - -0+0+0+=
 - - - - -0+0+0+0+0+=
 - - - -0+0+0+0+0+0+0+=
 - - -0+0+0+0+0+0+0+0+0+=
 - -0+0+0+0+0+0+0+0+0+0+0+=
 -0+0+0+0+0+0+0+0+0+0+0+0+0+=

这是初始代码的更短的替代方法,可直接使用单个循环构建行:

n=7
for i in range(n):
    print(' '*(n-i)+'0'*(2*i+1))

输出:

       0
      000
     00000
    0000000
   000000000
  00000000000
 0000000000000

推荐阅读