2016-10-04 106 views
1

我想要做的是創建一個字符串對象的星號,可以通過用戶輸入縮放。例如,用戶輸入4:功能的組合

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

因此,我不得不2個獨立的功能,其中一個產生的頂部和底部部分「****」 和一個其產生中間。它有效,當我讓他們分開時,我會打印topbottom,打印中間,打印tobbottom。但我只想使用打印一次,所以我將3個函數組合到了下面的代碼中。

user = input("How many times?") 
def hollow(user): 
    # top 
    var = "" 
    for s in range(user): 
     var += "*" 

    # middle 
    output = "" 
    middle = "*" 
    for x in range(1, user - 1): 
     middle += " " 
    middle += "*" 
    amount = user - 2 
    for i in range(0, amount): 
     if i == (amount - 1): 
      output += middle 
     else: 
      output += middle 
      output += "\n" 

    # bottom 
    var2 = "" 
    for z in range(user): 
     var2 += "*" 

    final = var + output + var2 
    print(final) 

hollow(user) 

這是輸出我使用此代碼獲取:

How many times?4 
***** * 
* ***** 

所以這裏的問題是:我怎麼得到這個代碼運行的形狀我在這篇文章的開頭顯示?

+2

那麼究竟是什麼問題? – Mureinik

+0

如果你只想使用'''print''' *一次*,你是否考慮過*返回字符串*? –

回答

0

你需要換行添加到您的最後一個變量:

final = var + '\n' + output + '\n' + var2 

請注意,您的代碼可以減少到這一點:

def hollow(user): 
    print ('*' * user + '\n' + ('*' + ' ' * (user-2) + '*\n') * (user-2) + '*' * user) 

hollow(4) 
+0

你是對的,我忽略了頂線和底線的換行符,因爲我認爲我已經實現了它們。 – Vitalynx