2016-07-06 6 views
1

のために私は、このような出力を持つようになってる間、私はこのコードを使用しています数は、使用してピラミッドループのpython

  1 
     2 1 
     3 2 1 
    4 3 2 1 
    5 4 3 2 1 
6 5 4 3 2 1 

outer = 1 
while outer <=6: 
    inner = 1 
    while inner <= outer: 
     print(inner, end=" ") 
     inner = inner + 1 
    print(" ") 
    outer = outer + 1 

をそれはなって何やっていませんする。代わりに次のようになります:

1 
1 2 
1 2 3 
1 2 3 4 
1 2 3 4 5 
1 2 3 4 5 6 

私が間違っていることを教えてもらえますか?

答えて

0

string.join()。あなたが昇順で印刷した 1:

def triangle(levels): 
    for i in range(1,levels + 1): 
     print(' '*2*(levels - i) + ' '.join(str(j + 1) for j in reversed(range(i)))) 

triangle(6) 

  1 
     2 1 
     3 2 1 
    4 3 2 1 
    5 4 3 2 1 
6 5 4 3 2 1 
0

はあなたのコードを探します、唯一の2の問題がありました。したがって、内側から外側を引くと、数字が降順で印刷されます 2.パディングは行ごとに異なりますので、パディングを外側のループに追加してください。

outer = 1 
while outer <=6: 
    inner = 1 
    print (" " * 2 *(6 - outer), end="") 
    while inner <= outer: 
     print(outer - inner + 1, end=" ") 
     inner = inner + 1 
    print(" ") 
    outer = outer + 1 
0

while解決策:多くの説明のためにあまりにも

outer = 1 
while outer <= 6: 
    inner = outer 
    pos = 6  # create a position variable and start from 6 since you are printing backward 
    while pos >= 1: 
     if pos > inner:   # print white space if pos is larger than the diagonal 
      print(" ", end=" ") 
      pos = pos - 1 
     else: 
      print(inner, end = " ") # Start to print number when pos is smaller than inner 
      inner = inner - 1 
      pos = pos - 1 
    print(" ") 
    outer = outer + 1 

      1 
     2 1 
     3 2 1 
    4 3 2 1 
    5 4 3 2 1 
6 5 4 3 2 1 
+0

ああおかげでこれはあなたのコードが2つのリビジョンでどのように見えるかです。それは本当に私をたくさん助けました^ _ ^ –

関連する問題