如何在不开始换行的情况下在for循环中打印?

时间:2015-10-27 18:41:37

标签: for-loop printing newline indentation pascals-triangle

我已经为程序编写了一些代码,可以找到Pascal的三角形。但是,格式化并没有像我希望的那样出现。我的代码如下:     def factorial(n):         “”计算一个阶乘“”“         p = 1         对于范围内的i(1,n + 1):             p = p * i         返回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):
        n = (a-1)-j
        print(" "*n, binomial(j, i), end=" ")
    print("")

感谢for循环在每个" "*n之前执行i in range(j+1)位,而不是获得一个不错的pascal三角形:

     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)-jprint(" "*n)位置放在for i in range(j+1)之外,而只放在for j in range(a)内,看看这是否只会缩进文本一次,但这会创建一个新行。我该怎么办?

1 个答案:

答案 0 :(得分: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循环的第一次出现。