2015-10-27 2 views
1

Я написал код для программы, которая найдет треугольник Паскаля. Однако форматирование не выходит, как я бы надеялся. Мой код выглядит следующим образом: Защиту факторный (п): «» «Рассчитать факториала» «» р = 1 для г в диапазоне (1, п + 1): р = р * я вернуть рКак вы печатаете в цикле for без запуска новой строки?

def binomial(n, k): 
    """Calculate n choose k""" 
    y = int(factorial(n)/(factorial(k)*factorial(n-k))) 
    return y 

a = int(input("How many rows of Pascal's triangle do you want?: ")) 
for j in range(a): 
    for i in range(j + 1): 
     n = (a-1)-j 
     print(" "*n, binomial(j, i), end=" ") 
    print("") 

Благодаря для цикла, делающего " "*n бит перед каждым i in range(j+1), вместо того, чтобы треугольник хороший Паскаля:

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

я получаю:

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

Что я могу посовещаться с этой ошибкой форматирования? Я попытался положить n = (a-1)-j и print(" "*n) бит вне for i in range(j+1) и внутри только for j in range(a), чтобы увидеть, будет ли это только отступ над текстом один раз, но это создало новую строку. Что мне делать?

ответ

1

Еще раз я пост после того, как изо всех сил в течение нескольких часов только, чтобы найти ответ в течение нескольких минут ...

Здесь я исправил проблему повторяющейся расстояния путем добавления if команду в такой код:

def factorial(n): 
    """Calculate a factorial""" 
    p = 1 
    for i in range(1, n+1): 
     p = p * i 
    return p 

def binomial(n, k): 
    """Calculate n choose k""" 
    y = int(factorial(n)/(factorial(k)*factorial(n-k))) 
return y 

a = int(input("How many rows of Pascal's triangle do you want?: ")) 
for j in range(a): 
    for i in range(j + 1): 
     if i == 0: 
      n = (a-1)-j 
      print(" "*n, binomial(j, i), end=" ") 
     else: 
      print(binomial(j, i), end=" ") 
    print("") 

Это обеспечило, что начальное отступы на (a-1)-j произошло только для первого падения цикла for.

Смежные вопросы