2017-11-13 10 views
-1

階段パターンを印刷しようとしています。次のように私は、コードを書かれている:文字の間のスペースを小さくする

def StairCase(n): 
    for i in range(1, n + 1): 
     stair_array = [] 
     j = 1 
     while (j <= n): 
      if (j <= i): 
       stair_array.append('#') 
      else: 
       stair_array.append(' ') 
      j = j + 1 

     reversed_array = list(reversed(stair_array)) 
     for element in reversed_array: 
      print "{}".format(element), 
     print 


_n = int(raw_input().strip("\n")) 
StairCase(_n) 

私のように出力を得た:期待される出力がある

6 
      # 
     # # 
     # # # 
    # # # # 
    # # # # # 
# # # # # # 

6 
    # 
    ## 
    ### 
    #### 
##### 
###### 

1は私の出力は空白である見ることができるようにし、元のパターンごとに受け入れられません。親切に助けてください。

+0

@pissall "#" – jadsq

+0

の間に階段を作っていないので、Python 3の学習を真剣に考えてください。Python 2は2020年に公式の終了時に到達します。 –

+0

リンクされた質問はさまざまな方法を示していますこれを 'print'ステートメントと' print'関数で行います。しかし、 '' '.join(element) 'を使ってこれを行うほうが良いでしょう。また、ループの代わりに文字列の乗算を使用して文字列を作成することもできます。 –

答えて

5

あなたが主張する場合:

def StairCase_new(n): 
    for i in range(1, n + 1): 
     print ' '*(n-i) + '#'*i 
1

あなたは答えを持っていますが、元のコードでは、あなたが、端末を使用「」抑制するために:

def StairCase(n): 
    for i in range(1, n + 1): 
     stair_array = [] 
     j = 1 
     while (j <= n): 
      if (j <= i): 
       stair_array.append('#') 
      else: 
       stair_array.append(' ') 
      j = j + 1 

     reversed_array = list(reversed(stair_array)) 
     print ''.join(reversed_array) 

が、はるかに簡単な方法は、単にすることです改行それはあなたが印刷するものの後にスペースを追加します。もちろん、Python 2では。

関連する問題