-1

最初の行が 0 番目のレベルである入力として n 番目のレベルが与えられた場合に、非直角パスカルの三角形を入力するコードを記述する必要があります。それとは別に、各行の最後にレベルを示す必要があります。これが私がこれまでに作ったものです:

level = input('Please input nth level: ')
x = -1
y = 1

while x < level:
    x = x+1
    d = str(11**x)
    while y < level:
        y = y+1
        print " ",
    for m,n in enumerate(d):
        print str(n) + " ",
    while y < level:
        y = y+1
        print " ",
    print x

3 を入力すると、次のように出力されます。

    1  0
1  1  1
1  2  1  2
1  3  3  1  3

私の望ましい出力は次のとおりです。

   1      0
    1 1     1
   1 2 1    2
  1 3 3 1   3
4

1 に答える 1

1

str.formatを使用して、文字列を中央に配置できます。

level = int(raw_input('Please input nth level: '))

N = level*2 + 5
for x in range(level+1):
    d = ' '.join(str(11**x))
    print('{d:^{N}} {x:>}'.format(N=N, d=d, x=x))

Please input nth level: 4
       1        0
      1 1       1
     1 2 1      2
    1 3 3 1     3
   1 4 6 4 1    4

d = '1331'の場合、次を使用して各桁の間にスペースを追加できることに注意してください' '.join(d)

In [29]: d = '1331'

In [30]: ' '.join(d)
Out[30]: '1 3 3 1'

d = str(11**x)を使用すると、x >= 5 の正しい数字が得られないため、パスカルの三角形の数値を計算する方法として問題があることに注意してください。たとえば、

Please input nth level: 5
       1        0
      1 1       1
     1 2 1      2
    1 3 3 1     3
   1 4 6 4 1    4
  1 6 1 0 5 1   5   <-- Should be 1 5 10 10 5 1 !

おそらく、パスカルの三角形の数字を別の方法で計算したいと思うでしょう。

于 2014-09-14T13:58:43.727 に答える