我有一个包含数字行的文本文件。我的程序试图提取代码行并将它们放入一个列表中,每个列表由构成文件中该行的数字组成,然后将所有这些列表放入一个列表中(我们称之为三角形)并为它们应用了一个函数,但是当我尝试使用它时,Python 解释器说 Triangle[x]
是一个整数类型,但是当我问它 type(Triangle[x]
时,它说它是一个列表。我的代码如下:
def compare(a,b):
"""Returns the larger of a and b"""
if a > b:
return a
else:
return b
doc = open('C:/Users/Joseph/My Documents/Programming fun/Python/Project Euler/18triangle.txt')
Triangle = []
for line in doc:
Triangle.append( map( int, line.split() ) )
doc.close()
Triangle.reverse()
for i in xrange(len(Triangle) - 1):
for j in xrange(len(Triangle[i]) - 1): # Here it says that 'type int has no len'
TEMP = compare(Triangle[i][j],Triangle[i][j + 1])
Triangle[i+1] = TEMP
预先感谢您提供的任何建议。
最佳答案
这看起来很可疑:
TEMP = compare(Triangle[i][j],Triangle[i][j + 1])
Triangle[i+1] = TEMP
Triangle
以整数列表作为成员开始,但随着您的浏览,您将元素分配为整数。事实上,除了 Triangle[0]
之外的每个元素都会发生这种情况,所以一旦 i
到达 1
,这总是会发生。顺便说一句,这是阅读文档的一种更好的方式:
with open('C:/Users/Joseph/My Documents/Programming fun/Python/Project Euler/18triangle.txt') as doc:
Triangle = [map(int, line.split()) for line in doc]
您的
compare
函数是标准 max
函数的子集;你可以改用它(正如@BrendenBrown 在评论中指出的那样)。此外,根据 standard Python style
Triangle
应该是 triangle
。关于python读取错误类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12013831/