[英]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.