一个三角形数字
number = '''3
7 4
2 4 6
8 5 9 3'''
从上到下查找最大和。
pyramidlist = [[int(x) for x in y.split(' ')] for y in number.split('\n')]
for i in range(len(pyramidlist) - 2, -1, -1):
for j in range(i+1):
pyramidlist[i][j] += max(pyramidlist[i+1][j], pyramidlist[i+1][j+1])
我收到一个错误:
pyramidlist[i][j] += max(pyramidlist[i+1][j], pyramidlist[i+1][j+1])
TypeError: 'int' object is not callable
什么是金字塔列表?为什么我认为max不起作用:
In [183]: pyramidlist
Out[183]: [[3], [7, 4], [2, 4, 6], [8, 5, 9, 3]]
In [184]: max(pyramidlist[1][0],pyramidlist[1][1])
Traceback (most recent call last):
File "<ipython-input-184-c42be0ee587f>", line 1, in <module>
max(pyramidlist[1][0],pyramidlist[1][1])
TypeError: 'int' object is not callable
答案 0 :(得分:2)
您正在使用IPython。您在执行的代码/单元中分配的所有变量在整个会话之前都将保留其值。
如果您这样做
max = 25
然后
max(3, 4)
会给你
TypeError: 'int' object is not callable
如果错误地替换了一个内置函数,则可以像这样将其原始值返回:
import builtins
max = builtins.max
max(3, 4)
# 4
正如@ user2357112所评论的那样,一种更简单的方法是
del max
用他自己的话说,
更容易,更彻底。 (看起来应该 情况更糟,但事实并非如此。)