2013-10-28 63 views
0

我想打印的東西,看起來像這樣:製作樹形狀。

* 
    *** 
    ***** 
******* 
********* 
    *** 
    *** 
    *** 

與用戶輸入的頭部的最厚部分的寬度和莖的寬度。

到目前爲止,我已經設法搞到頭使用此代碼打印:

def head(size): 
    n=1 
    while n < size+1: 
     astri = n * "*" 
     print '{:^50}'.format(astri) 
     n += 2 

print head(x) 

x = input("Please enter an odd integer for the head") 

但我完全被卡住瞭如何做樹的莖。

+2

您的文章缺少題。你有具體的問題嗎? –

+0

我被困在如何包括樹幹。我發佈的代碼是頂部的三角形,但我也需要能夠包含主幹。 – JaAnTr

+0

是的,你在帖子中提到過。但是原帖和你的評論都沒有包含任何問題。將來,如果你真的提出問題,你會收到更高質量的答案。 –

回答

4

事情是這樣的:

def tree(head, stem): 
    #for head 
    for i in xrange(1, head+1, 2): 
     print '{:^{}}'.format('*'*i, head) 
    #for trunk 
    for _ in xrange(3): 
     print '{:^{}}'.format('*'*stem, head) 
...   
>>> tree(10, 3) 
    *  
    ***  
    ***** 
******* 
********* 
    ***  
    ***  
    ***  
>>> tree(5, 1) 
    * 
*** 
***** 
    * 
    * 
    * 

更新:

爲了保持stem寬度按比例寬head

def tree(head, stem): 
    for i in xrange(1, head+1, 2): 
     print ('*'*i).center(head) 
    x = (head/2) if (head/2)%2 else (head/2)-1 
    for _ in xrange(stem): 
     print ('*'*x).center(head) 

>>> tree(12, 2) 
    *  
    ***  
    *****  
    ******* 
********* 
*********** 
    *****  
    *****  
>>> tree(14, 4) 
     *  
    ***  
    *****  
    *******  
    ********* 
*********** 
************* 
    *******  
    *******  
    *******  
    *******  
+0

不錯!井井有條。 – aIKid

+0

非常感謝!我想當我發佈這個問題時,我沒有說清楚,但是我希望每次都能夠使用相同的寬度,但是能夠改變它的長度。我試圖自己做這件事,並決定寬度應該始終是頭部的寬度除以2,但我無法解決如何實際執行它。你能幫我嗎? – JaAnTr

+0

@JaAnTr嘗試:'打印 '{:^ {}}'。格式( '*' *(頭/ 2),頭)' –