2015-10-14 66 views
3

首先定義一個菱形我定義兩種功能。一個使具有奇數(3,5,7 ...)基b向上的三角形,並置於一個單位遠離左側。然後是另一個做同樣的事情,但與基地向下的三角形。分別稱它們爲triup和trido。我們得到:由兩個三角形

def triup(a,b): 
    c=b 
    a=a 
    for i in range(1,b+1): 
     print(a*" "+c*'*') 
     c-=2 
     a+=1 
     if c==-1: 
      break 

def trido(a,b): 
    c=1 
    a=a+round((b-1)/2) 
    for j in range(1,b+1): 
     print(a*" "+c*"*") 
     c+=2 
     a-=1 
     if c==b+2: 
      break 

現在我想通過結合這兩個函數做一個菱形。所以首先我嘗試過:

def rhomb(a,b): 
    print(trido(a,b)) 
    print(triup(a,b)) 

其中兩次打印「無」。此外,我必須改變,以便我不是基地兩次,但我不能改變三角形的定義。我該如何去解決這個問題?如果你以後要使用的字符串,串連每串要打印在代碼中添加一個新行,通過返回的實際價值也將刪除無是你在看到任何提示,將是有益的

+0

你的函數返回沒有因此受到返回None默認情況下,不要打印函數調用,不打印a ppear –

+0

@PadraicCunningham我試過回報爲好。但隨後的菱形功能只是打印從triup環路trido環和第一個「結果」的第一個「結果」。 – Lozansky

+0

你不能在循環回來,如果你想加入兩個輸出然後CONCAT每個字符串,並返回連接字符串,而不是你的破 –

回答

2

您需要返回值的輸出你實際上並沒有返回值不是蟒蛇默認無:

def triup(a, b): 
    c = b 
    out = "" 
    for i in range(1, b + 1): 
     out += a * " " + c * '*' + "\n" 
     c -= 2 
     a += 1 
     if c == -1: 
      return out 
    return out 


def trido(a, b): 
    c = 1 
    a += round((b - 1)/2) 
    out = "" 
    for j in range(1, b + 1): 
     out += a * " " + c * "*" + "\n" 
     c += 2 
     a -= 1 
     if c == b + 2: 
      return out 
    return out 

您可以將兩個輸出,做任何你與他們喜歡的:

In [10]: a,b = triup(5,5),trido(5,5) 

In [11]: print(a) 
    ***** 
     *** 
     * 


In [12]: print(b) 
     * 
     *** 
    ***** 


In [13]: print(b+a) 
     * 
     *** 
    ***** 
    ***** 
     *** 
     * 
In [14]: print(a + b) 
    ***** 
     *** 
     * 
     * 
     *** 
    ***** 
+0

謝謝!你能解釋一下嗎?有沒有辦法打印triup或trido沒有基地(這樣它不會在菱形中重複)? – Lozansky

+0

以下是我的嘗試: def rhomb(a,b): print(trido(a,b)+「」+ triup(a,b-2)) 添加的空間僅適用於第一行triup雖然。我該如何解決這個問題? – Lozansky