2

私はこのコードを持っています:

def floyd(n):
    count = 1
    string = ""
    for i in range(1,n+2):
        for j in range(1,i):
            string = string + " " + str(count)
            count = count + 1
        print(string)
        string = ""
print floyd(6) 

それは印刷します:

1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21

しかし、私はそれを次のようにしたい:

       1
      2 3
     4 5 6
   7 8 9 10
 11 12 13 14 15
16 17 18 19 20 21

その方法を理解するのを手伝ってくれませんか?

4

3 に答える 3

5

Python 文字列には、実際にcenter()それを実行できる組み込みメソッドがあります。

print(string.center(total_width))

total_width次の方法で事前に設定できます。

total_width = -1

for i in xrange(0, n):
    total_width += 1 + len(str((n + n * n) / 2 - i))

または

total_width = sum(1 + len(str((n + n * n) / 2 - i)) for i in xrange(0, n)) - 1

つまり、n 番目の三角形番号 (n² + n) ÷ 2 と同じ行にある数字の文字列表現の長さの合計です。

これがデモです!

于 2013-09-30T17:50:30.037 に答える