尝试对fi的内容求和时出错

2024-10-02 22:29:34 发布

您现在位置:Python中文网/ 问答频道 /正文

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

TypeError: unsupported operand type(s) for +=: 'int' and 'str'


Tags: intxtforopenitemmyfileintlines
2条回答

你所说的“文件内容总和”到底是什么意思?你把所有的数字都加在一个叫做“lab3.txt”的文件里了吗

要将文件的内容存储在变量中,可以使用myfile.readlines()(不是myfile.readlines括号是必要的。如果不使用方括号,则该语句不会读取任何内容。)或者使用for块一次遍历一行文件的内容但并非两者都是,正如暗影游侠的评论所解释的那样

假设'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()])

您的项在代码中没有声明为int。试着分析一下

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

相关问题 更多 >