仅使用有限的编程概念打印帕斯卡三角形

Print Pascal's Triangle using only limited programming concepts

请告诉我我的程序有什么问题。我想仅使用嵌套循环和 if 语句来打印 Pascal 的三角形,因为这些已在我们的课程中介绍:

x=int(input("Enter depth of triangle "))
y=0
n=1
while(y<=x):
    a=11**y
    z=a
    za=0
    b=z%10
    z=z//10
    if(y==0):
        print(x*" ",b)
    elif(y!=0):
        if(za==0):
            print(x*" ",b,end="")
        elif(za<x):
            print((x-za)*" ",b,end=" ")
        elif(za==x):
            print((x-za)*" ",b)
    y=y+1
    za=za+1
    else:
    print("program done")

输出:

Enter depth of triangle 4
     1
     1     1     1     1program done

如果您阅读维基百科关于帕斯卡三角的文章的 Calculating a row or diagonal by itself 部分,仅使用嵌套 while 循环(没有 ifs)获取数字似乎相当简单:

depth = int(input("Enter depth of triangle: "))

row = 0

while row < depth:
    number = 1
    denominator = 1
    numerator = row

    print(number, end=' ')

    while numerator > 0:
        number = number * numerator // denominator
        print(number, end=' ')
        numerator = numerator - 1
        denominator = denominator + 1

    print()
    row = row + 1

输出

> python3 test.py
Enter depth of triangle: 10
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1 
>

现在添加必要的代码以将输出从直角三角形重塑为更多的等腰三角形。

Please tell me what is wrong with my program.

您说您想使用嵌套循环来解决问题,但您实际上并没有嵌套循环——只有一个外部循环。从三角形的行到 11 的幂很简单,给定一些附加进位逻辑,但反过来似乎很难做到这一点:

a=11**y

而且你应该选择更好的变量名。