python - 嵌套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("")?
解决方案
您正在使用print
withend=""
逐个字符地构建行,而无需换行。
要构建金字塔,您需要在一行零之后跳到下一行,因此默认情况下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
推荐阅读
- c# - 分配事件处理程序时的 C#“System.StackOverflowException:”
- python - 如何修复错误的精度和 R 方?
- c# - 使用 IP 地址而不是机器的主机名时找不到网络路径
- vue.js - Vuetify 样式标签未出现在我的网页中
- msbuild - 如何将 TeamCity 重新指向不同的 MsBuild
- excel - 根据工作表列表重命名具有各种扩展名的文件夹中的文件
- ios - Animate AVPlayerLayer 变换属性
- dart - 使用 Futures 时 .then() 和 .whenCompleted() 方法之间的区别?
- mysql - 总结 leave_time 到 end_date of order(尽管 end_date of leave 大于 order_status 的 end_date) - mysql
- c# - 将数据绑定到 Xamarin 表单中的 Scrollview Stacklayout