我进入编程第四周(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循环。这就对了。没有额外的功能或其他东西。
答案 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]