2016-04-13 9 views
0

で階乗三角形を作成します。私がする必要があるのpythonのための階乗のための三角形のように見えるようにしたいのpython

8 7 6 5 4 3 2 1 
8 n 
7 n n 
6 n n n 
5 n n n n 
4 n n n n n 
3 n n n n n n 
2 n n n n n n n 
1 n n n n n n n n 

私のコードは次のとおりです。

import math 

def combination(n,m): 
    return int((math.factorial(n))/((math.factorial(m))*math.factorial(n-m))) 

def main(): 
    print("|",end='') 
    for n in range(8,0,-1): 
     print(" ",n,end='') 
    print() 
    print("--------------------------------------") 

    for m in range(8,0,-1): 
     print(m,"|",end='') 
     for n in range(8,0,-1): 
      if(n>=m): 
       print(format(combination(n,m),"4d"),end='') 
      else: 
       print() 
main() 

助けてください。

+0

組み合わせ関数は、パスカルの三角形の値を計算します。私には質問はありません。あなたの問題は何ですか? – MBo

答えて

0

あなたのような印象は、不要な空白行です。 elseステートメントにbreakステートメントを追加する必要があります。また、最初のprint文にスペースを追加してテーブルを整列させ、2番目のprint文にformat文を追加して、mの桁数が増えると一貫した出力が得られるようにします。

import math 

def combination(n,m): 
    return int((math.factorial(n))/((math.factorial(m))*math.factorial(n-m))) 

def main(): 
    print(" |",end='') 
    for n in range(8,0,-1): 
     print(format(n, "4d"), end='') 

    print() 
    print("--------------------------------------") 

    for m in range(8,0,-1): 
     print(m,"|",end='') 
     for n in range(8,0,-1): 
      if(n>=m): 
       print(format(combination(n,m),"4d"),end='') 
      else: 
       print() 
       break 
    print() 

main() 

# | 8 7 6 5 4 3 2 1 
# -------------------------------------- 
# 8 | 1 
# 7 | 8 1 
# 6 | 28 7 1 
# 5 | 56 21 6 1 
# 4 | 70 35 15 5 1 
# 3 | 56 35 20 10 4 1 
# 2 | 28 21 15 10 6 3 1 
# 1 | 8 7 6 5 4 3 2 1 
関連する問題