数字半金字塔Python

时间:2017-02-27 22:43:40

标签: python nested-loops

我正在尝试在蟒蛇的左侧打印一个半金字塔。 到目前为止,这是我的代码

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

如何进行此更改?

4 个答案:

答案 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