2016-04-13 3 views
0

Я хочу, чтобы сделать треугольник для факториала питона, которая должна выглядеть так:Создать факторный треугольник питона

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

Похоже, вы печатаете ненужные пустые строки. Вам нужно добавить инструкцию break к заявлению else. Также добавьте пару пробелов в первый оператор печати, чтобы выровнять таблицу и добавить оператор формата во второй оператор печати, чтобы получить согласованный вывод, когда число цифр 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