簡體   English   中英

如何重新創建金字塔三角形?

[英]How to recreate pyramid triangle?

我必須編寫一個遞歸函數asterisk_triangle ,該函數需要一個整數,然后返回一個由這么多行組成的星號三角形。

例如,這是一個4行星號三角形。

     *
    **
   ***
  ****

我已經嘗試過此功能:

def asterix_triangle(depth):
            rows = [ (depth-i)*' ' + i*2*'*' + '*'   for i in range(depth-1) ]
            for i in rows:
            print i

和以下功能:

def asterisk_triangle(rows=n):
    pyramid_width = n * 2
    for asterisks in range(1, pyramid_width, 2):
        print("{0:^{1}}".format("*" * asterisks, pyramid_width))

兩者都不起作用。 我應該做tests.py來測試功能,我得到例如錯誤

Traceback (most recent call last):
  File "C:\Users\akumaukpo\Documents\CISC 106\LAB05\lab05 _test.py", line 19, in <module>
    from lab05 import *
  File "C:\Users\akumaukpo\Documents\CISC 106\LAB05\lab05.py", line 22
    print i
        ^

塊中的每個語句必須從塊開始至少縮進一個空格。 代碼中的print語句相對於包含在其中的for塊沒有縮進,這就是為什么會出現錯誤。

嘗試這個:

def asterix_triangle(depth):
        rows = [ (depth-i)*' ' + i*'*' + '*'   for i in range(depth) ]
        for i in rows:
            print i

產生:

>>> asterix_triangle(4)
    *
   **
  ***
 ****

編輯:

我剛剛意識到您想要的輸出是同時擁有兩個三角形。 如果是這樣,只需在字符串的右側添加相同的內容來鏡像字符串:

def asterix_triangle(depth):
        rows = [ (depth-i)*' ' + i*'*' + '*' + i*'*'  for i in range(depth) ]
        for j in rows:
            print j

輸出:

>>> asterix_triangle(4)
    *
   ***
  *****
 *******

如果您需要遞歸做金字塔,則可能需要做這樣的事情。

def asterix_triangle(i, t=0):
    if i == 0:
        return 0
    else:
        print ' ' * ( i + 1 ) + '*' * ( t * 2 + 1)
        return asterix_triangle(i-1, t + 1)

asterix_triangle(5)

這個想法是您使用兩個變量。 i是,每次調用該函數都會減去一次,並用於結束循環。 另一個變量用於增加增量。 然后,使用i打印空格數,然后使用t星星數。

輸出為:

      *
     ***
    *****
   *******
  *********
for i in range(10):
print((' '*(10-i-1))+(('*')*((2*i)-1)))

輸出如鏈接中所示

暫無
暫無

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

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