gpt4 book ai didi

python读取错误的类型

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:44 26 4
gpt4 key购买 nike

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

关于python读取错误的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12013831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com