【问题标题】:nested for loop to build a "0" pyramid嵌套for循环构建“0”金字塔
【发布时间】:2021-12-09 15:42:59
【问题描述】:
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(" ")?

【问题讨论】:

  • print("0", end = "") 这将在同一行继续下一个打印值。 print(" ") 这将使它进入新行。

标签: python loops nested-loops


【解决方案1】:

您正在使用 printend="" 逐个字符地构建行,而无需进入新行。

要构建金字塔,您需要在一行零之后跳到下一行,因此默认情况下 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

【讨论】:

  • 非常感谢!这太清楚了!
猜你喜欢
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
相关资源
最近更新 更多