python中的Pascal三角形?

2024-04-26 13:02:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我似乎在python中创建pascal三角形时遇到了一个问题,我真的很沮丧没有找到这个问题。请帮忙。谢谢。在

代码如下:

inpt = input("Enter levels: ")   #number of levels in a triangle
list1 = []
list2 = [1]

for a in range(inpt):
    list1.append(1)
    for x in range(a+1):
        if (x == 0 or x == a):
            list1[x]
        elif (x > 0 or x < a):
            list1[x] = list2[x] + list2[x-1]
    print list1
    list2 = list1

它打印出这样的东西:

^{pr2}$

Tags: orof代码innumberforinputrange
3条回答

使用list2 = list1表示这两个名称list1和{}引用的是同一个列表。
要真正复制列表,可以使用list2 = list1[:](或类似copy)的模块。另请参见this question ("python list by value not by reference")

for a in range(inpt):
    list1.append(1)
    for x in range(a+1):
        if (x == 0 or x == a):
            list1[x]
        elif (x > 0 or x < a):
            list1[x] = list2[x] + list2[x-1]
    print list1
    list2 = list1[:]

我相信您需要深度复制或克隆列表,而不是list2=list1,因为这将使两个变量指向同一个列表。 参考How to clone or copy a list?

你可以简化你的代码。在

for x in range(a+1)从0开始一直到a,因为您使用的是a+1,所以使用if检查可以避免0和{},因此从1开始并循环range(a)这样就不需要任何{}检查了:

for a in xrange(inpt):
    list1.append(1)
    for x in xrange(1, a):
        list1[x] = list2[x] + list2[x-1]
    print list1
    list2 = list1[:]

相关问题 更多 >