Python。帕斯卡三角

Python. Pascal's triangle

我是 Python 的初学者。现在我正在尝试创建一个算法来构建帕斯卡三角形。

我的第一步是创建一个基本迭代,它将使用一个名为当前级别的列表,并基于它创建下一个级别列表,如下所示:

  1. 第一个数字加0创建左边的数字并插入 进入列表。
  2. 创建数字的内行并将它们插入到列表中
  3. 将 0 添加到最后一个数字以创建正确的数字并将其插入 进入列表。

我的代码只包含一次迭代,但现在迭代不是问题。我不明白如何通过索引正确地处理列表中的元素。

有人可以给我提示吗?

谢谢!

currentlevel = [1]

nextlevel = []
leftnumber = 0 + currentlevel[0]
nextlevel.append(leftnumber)

for item[index] in currentlevel:
    if index > 1 and index < len(currentlevel)-1:
        item[index] = item[index] + item[index+1]
        nextlevel.append(item[index])
    else:
        rightnumber = currentlevel[-1] + 0
        nextlevel.append(rightnumber)

currentlevel = nextlevel
print(currentlevel)
  1. 这行不通:

    for item[index] in currentlevel:
    

    使用这个:

    for index, item in enumerate(currentlevel):
    

    然后无论你在哪里使用 item[index] 使用 itemcurrentlevel[index]。除了...

  2. 这里除外:

    item[index] = item[index] + item[index+1]
    nextlevel.append(item[index]) 
    

    这里最好使用另一个变量:

    next_item = currentlevel[index] + currentlevel[index+1]
    nextlevel.append(next_item) 
    

    虽然 item 可以工作,但有点令人困惑;但是如果你在 next_item 所在的位置使用 currentlevel[index],你将破坏前一行。如果您想打印后忘记,这不是问题,但有选择和灵活性很好。

  3. 这将不必要地跳过两个元素:

    if index > 1 and index < len(currentlevel)-1:
    

    删除第一个子句:

    if index < len(currentlevel)-1:
    

目前看到的就这些,无法测试。

编辑:不是这样的错误,但 0 + whateverwhatever 相同。

除非我遗漏了一些 Python 新奇之处,否则 for item[index] in currentlevel: 行是语法错误(编辑:这不是语法错误,而是名称错误;请参阅 Tutleman 的评论)。

尝试以下替代方法来获取列表元素及其索引:

for index, item in enumerate(currentlevel):

或者使用下面的方法来获取索引并通过它们访问元素:

for index in range(len(currentlevel)):
    item = currentlevel[index]

查看 this answer 了解更多信息。

我通常不会 post 完整的答案但是...

maxlevel = 5
currentlevel = [1]

for levels in range(maxlevel):
    nextlevel = [1]
    for index,item in enumerate(currentlevel[0:-1]):
        if (len(currentlevel) == 1):
            break

        nextlevel.append(item + currentlevel[index + 1])

    nextlevel.append(1)

    print(nextlevel)

    currentlevel = nextlevel