我有一个包含数字行的文本文件。我的程序试图提取代码行并将它们放入一个列表中,每个列表由构成文件中该行的数字组成,然后将所有这些列表放入一个列表中(我们称之为三角形)并为它们应用了一个函数,但是当我尝试使用它时,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/

10-12 21:47