获取TypeError尝试对文件内容求和

时间:2019-02-01 03:51:57

标签: python python-3.x

ctn =0
myfile = open("lab3.txt")
lines = myfile.readlines
for item in myfile:
        ctn += item
print(int(ctn))
  

TypeError:+ =不支持的操作数类型:“ int”和“ str”

2 个答案:

答案 0 :(得分:0)

您的商品未声明您的代码为int。尝试解析它。

int ctn = 0
myfile = open("lab3.txt")
lines = myfile.readlines
for item in myfile:
    ctn += int(item)
print(ctn)

答案 1 :(得分:0)

“对文件的内容求和”到底是什么意思?您是否将所有数字加到名为“ lab3.txt”的文件中?

要将文件的内容存储在变量中,可以使用myfile.readlines()。 (不是myfile.readlines -括号是必需的。如果不使用括号,则该语句将不读取任何内容。)或使用for块在文件的第一行中遍历文件的内容。时间。 但不是两者,如ShadowRanger的评论所述。

假设“ lab3.txt”包含以下几行。

84
236
956
31
163
538
4
861

要找到他们的总和,您可以执行以下操作。

ctn = 0
myfile = open('lab3.txt')
for item in myfile:
    ctn += int(item) # convert string to integer
print(ctn)

在这里,item将顺序获取文件中每一行的(字符串)值。它将转换为整数并添加到ctn

readlines返回一个列表。 (该列表的每个元素都是一个字符串,字符串是文件中的行。)如果必须使用readlines,则必须将列表中的元素转换为整数。

myfile = open('lab3.txt')
lines = myfile.readlines()
lines_int = [int(item) for item in lines]
ctn = sum(lines_int)
print(ctn)

别忘了关闭文件。

myfile.close()

如果使用文件上下文,则不必为此close操心。观察如何将代码减少到只有两行。

with open('lab3.txt') as myfile:
    ctn = sum([int(item) for item in myfile.readlines()])