簡體   English   中英

半數金字塔Python

[英]Number half Pyramid Python

我正在嘗試在python的左側打印一個星形的半金字塔。 到目前為止,這是我的代碼

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

我該如何進行更改?

只需倒轉第二個循環-即可打印出實際數字的循環:

for j in range(i-1, 0, -1):

最后一個參數控制“步”,或變量在每次循環迭代中的變化量。 輸出:

                1 

              2 1 

            3 2 1 

          4 3 2 1 

        5 4 3 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()

您可以反轉打印為數字的范圍

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")

問題出在第二個for循環中,因為您要從1循環到i ,這意味着您首先打印1,然后再打印每個數字,直到(不包括) i為止。

幸運的是,for循環可以反向進行。 因此,代替:

for j in range(1, i)

您可以這樣寫:

for j in range((i-1), 0, -1)

第一個參數表示循環開始的位置,第二個參數表示循環結束的位置,第三個參數表示我們的跳轉將達到多少,在這種情況下為負。 我們從i-1並在0處結束的原因是因為循環正好從第一個給定數字開始,然后循環直到第二個給定數字之前,所以在您給定的代碼中,循環就在i之前停止,所以這個也可以在i之前開始,但是如果希望在金字塔中包含12,則可以刪除-1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM