蟒蛇。帕斯卡的三角形

时间:2015-01-05 22:57:54

标签: python

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

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

  1. 将0添加到第一个数字以创建左侧数字并插入 列表。
  2. 创建内部数字行并将其插入列表
  3. 将0添加到最后一个数字以创建正确的数字并插入它 列表。
  4. 我的代码只包含一次迭代,但迭代现在不是问题。我不明白如何正确地索引列表的元素。

    有人可以给我一个提示吗?

    谢谢!

    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)
    

3 个答案:

答案 0 :(得分:1)

  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可行,但有点令人困惑;但是如果你使用currentlevel[index] next_item,那么你就是在破坏前一行。如果你想打印并忘记,这不是问题,但选择和灵活是件好事。

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

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

    删除第一个子句:

    if index < len(currentlevel)-1:
    
  4. 我现在看到的全部,无法测试。

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

答案 1 :(得分:0)

除非我错过了一些Python的新颖性,否则行for item[index] in currentlevel:是语法错误(编辑:它不是语法错误,而是名称错误;请参阅Tutleman的评论)

尝试使用以下替代方法来获取list元素及其索引:

for index, item in enumerate(currentlevel):

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

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

查看this answer了解详情。

答案 2 :(得分:0)

我通常不会发布完整答案,但是......

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