【发布时间】:2021-01-19 08:41:56
【问题描述】:
我在 Jupyter 中编写了一个函数,它接收一个包含帕斯卡三角形一行的值的列表,然后生成下一行。由于项目的要求,我需要从一个只包含整数 1 的列表开始,然后创建一个调用该函数 5 次的循环(留下总共 6 行)。
import math
def pascals_triangle(list):
nextrow = []
numrows = len(list)
numcols = len(list)
count = 0
for x in range(numcols+1):
val = ((math.factorial(numrows)) / ((math.factorial(count)) * math.factorial(numrows - count)))
nextrow.append(val)
count += 1
numrows += 1
numcols += 1
print(nextrow)
return nextrow
list = [1]
print(list)
for x in range(5):
pascals_triangle(list)
这是我的问题:我无法以打印出所有 6 个递增行的方式更新我的函数参数或计数。现在,它只打印五次相同的返回值。
预期输出:
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
实际输出:
[1]
[1, 1]
[1, 1]
[1, 1]
[1, 1]
[1, 1]
如何让函数在每次调用时使用之前的返回值,或者让我的 numrows/numcols 为下一次函数调用递增?
【问题讨论】:
-
旁注:您应该避免使用内置函数的名称(list、dict、id、...)作为变量名。虽然 Python 确实允许这样做,但您实际上是在覆盖内置函数,这可能会在后续代码中咬到您。
-
你一遍又一遍地传递相同的值。你为什么指望它是昌河?
-
感谢大家的反馈!这实际上是我第一次用 Python 编写任何东西,而且我是一个整体编程新手,所以我感谢你的耐心。
标签: python loops for-loop parameter-passing jupyter