用Python编写基本的Pascal三角形

时间:2017-05-21 19:51:34

标签: python pascals-triangle

我进入编程第四周(python)并且它变得严肃起来。 我们的教授要求我们在python中编写一个字段,为了表示Pascal的三角形而存在越来越长的字段:

b = [[1],[1,1],[1,2,1],[1,3,3,1],...]

我们刚刚开始编码的基础知识,这意味着我们允许使用任何附加功能,如功能等。 最重要的是,我们使用while和for循环以及if语句。

我真的需要帮助才能开始。 我是这样开始的:

n = int(input("Number of layers="))
b = [[1]]

for layer in range(0,n):
     for row in range(0,n):

这就是我被卡住的地方。

我看到了pascale三角形呈现方式的结构: 据我所知,每个附加层的b内部字段的长度增加1。 我有一个想法,我可以检查外部元素,因为他们总是保持价值" 1"。我只是找不到解决方案,怎么做......

1
11
121
1331
14641
..
..

然而,我从这里找不到起点继续前进.. 也许有人可以帮助我..请记住,我必须坚持下去 while-和for循环。这就对了。没有额外的功能或其他东西。

3 个答案:

答案 0 :(得分:1)

我确定那里有非常好的解决方案,但是如果你正在寻找初级水平的东西,请查看

{{1}}

答案 1 :(得分:0)

由于这是一项任务,我不会为您提供完整的解决方案,但我会尽力帮助您。看起来你建议使用两个嵌套的for循环。这应该有效,尽管你可能需要稍微改变一下。请记住,您已经获得b = [[1]]

接下来,考虑如何从前一行构造新行中的元素。是否存在与之前某些元素的简单代数关系? (你可能想问维基百科关于Pascal的三角形)。你如何索引这些元素?您可能还想查看例如列表的append函数。这可能不是最有效的解决方案,但这并不重要。

答案 2 :(得分:0)

什么是:

    1 3 3 1 0 
  + 0 1 3 3 1
  -----------
    1 4 6 4 1

您可以通过将前一行的元素移到一行来计算下一行:

p = [1,3,3,1]
l = [0]*(len(p)+1)
for i in range(len(p)):
    l[i] += p[i]
for i in range(len(p)):
    l[i+1] += p[i]
print l

如果不允许[0]*n,您可以通过以下方式构建0的列表:

l = []
for i in range(len(p)+1):
    l += [0]