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,这给在标题中提到的错误罚款。
答
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。这应该解决您的问题
可能重复的[我如何连接str和int对象?](http://*.com/questions/25675943/how-can-i-concatenate-str-and-int-对象) – Faibbus