Python27 TypeError:不支持的操作数类型(s)+ ='int'和'str'

Python27 TypeError:不支持的操作数类型(s)+ ='int'和'str'

问题描述:

请帮我理解这里发生了什么。我的目标是创建一个读取“input.txt”并返回文本文档中每行的最小值,最大值和平均值的函数。在文档中的文本如下:Python27 TypeError:不支持的操作数类型(s)+ ='int'和'str'

min:1,2,3,4,5,6 
max:1,2,3,4,5,6 
avg:1,2,3,4,5,6 

我的代码如下所示:

import re 

def process(): 

    file = open("input.txt", "r") 

    for line in file: 
     newL = re.findall("\d+", line) 

    minimum = min(newL) 
    maximum = max(newL) 
    length = len(newL) 
    numSum = sum(newL) 

    print newL 
    print minimum 
    print maximum 
    print length 
    print numSum 

    file.close() 

process() 

一切都打印出来,除了numSum,这给在标题中提到的错误罚款。

+0

可能重复的[我如何连接str和int对象?](http://*.com/questions/25675943/how-can-i-concatenate-str-and-int-对象) – Faibbus

re.findall返回字符串列表,例如["foo", "bar", "baz"]。的sum实现是这样的:

def sum(xs): 
    total = 0 
    for x in xs: 
     total += x 
    return total 

所以,在某些时候,它会尝试执行这行total = 0 + "foo"和跌倒,因为Python不知道如何将int添加到string。事实上,你知道你所有的字符串实际上包含int s是不重要的,因为表达式1+'1'可能明智地评估为'11'2,并且Python不会猜测哪个字符。

当你在每一行中阅读,你应该将每个字符串转换为一个int。这应该解决您的问题

+1

@ZeroPiraeus,的确,我想要一个更简单的例子。鉴于OP似乎很新,这可能是一个家庭作业问题,我不想仅仅提供解决方案。 – ymbirtt

+0

非常感谢。我添加了一个列表理解来将所有字符串转换为整数,并且它可以工作。 'newL2 = [int(物品)为newL中的物品]' – Muzi

+0

@Muzi,别担心。如果这个答案解决了你的问题,你可能想用绿色的勾号来接受它。编辑我的答案以包含您的解决方案,您可能会发现它也很有建设性。 – ymbirtt