我正在尝试在蟒蛇的左侧打印一个半金字塔。 到目前为止,这是我的代码
for i in range(1,12):
for j in range(12 - i):
print(" ", end = " ")
for j in range(1, i):
print(j, end = " " )
print("\n")
我的输出是
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
但是,我的输出意味着相反的顺序:
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
如何进行此更改?
答案 0 :(得分:1)
只需反转第二个循环 - 打印实际数字的循环:
for j in range(i-1, 0, -1):
最后一个参数控制“步骤”,或者每个循环迭代变量的变化量。输出:
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
...
答案 1 :(得分:1)
您可以将您打印的范围反转为数字
for i in range(1,12):
for j in range(12 - i):
print(" ", end = " ")
for j in reversed(range(1, i)):
print(j, end = " " )
print("\n")
答案 2 :(得分:1)
通过添加第三个参数(-1
)来反转范围。同时格式化您的数字以使用2个位置,因此10不会将最后一行推到右侧。最后,最后一个print
可能不应该有\n
,因为它已经是print
的默认结束字符:
for i in range(1,12):
for j in range(12 - i):
print(" ", end = "")
for j in range(i-1, 0,-1):
print(str(j).rjust(2), end = "" )
print()
答案 3 :(得分:0)
问题在于你的第二个for循环,因为你从console.log()
循环到1
,这意味着你首先打印1,然后是每个后续数字,直到(不包括){{ 1}}。
幸运的是,for循环可以反过来。所以,而不是:
i
你可以写:
i
第一个参数表示循环开始的位置,第二个参数表示循环结束的位置,第三个参数表示跳转的大小,在本例中为负数。我们从for j in range(1, i)
开始并在for j in range((i-1), 0, -1)
结束的原因是因为循环从第一个给定数字开始,并且循环直到第二个给定数字之前,所以在给定的代码中,循环在之前停止i-1
,所以这个也在0
之前开始,但如果您希望在金字塔中包含12,则可以删除i
。