2016-10-04 19 views
1

私がしようとしているのは、アスタリスクを持つ文字列オブジェクトを作成することです。これは、ユーザー入力によって拡大/縮小できます。たとえば、ユーザ入力4:関数の組み合わせ

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

は、だから私は2つの別々の機能、上部と下部を作成する1「****」 と真ん中を作成するものを持っていました。私はそれらを分離していたときに働いた、私はちょうどtopbottomを印刷し、中間を印刷し、tobbottomを印刷した。しかし、私はプリントを1回だけ使用したいので、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''のみ* once *を使いたいのであれば、文字列を返す*を考えましたか? –

答えて

0
あなたが最終的変数に改行を追加する必要があり

:あなたのコードがこれまで低減することができる

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

注:

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

hollow(4) 
+0

あなたが正しいと思うので、上と下の改行を見落としました。 – Vitalynx