请帮助我了解这里发生的事情。我的目标是创建一个函数,它将读取“input.txt”并返回文本文档中每行的最小值,最大值和平均值。文件内的文字如下:
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 :(得分:1)
re.findall
会返回一个字符串列表,例如["foo", "bar", "baz"]
。 sum
的实现是这样的:
def sum(xs):
total = 0
for x in xs:
total += x
return total
因此,在某些时候,它会尝试执行像total = 0 + "foo"
这样的行并摔倒,因为Python不知道如何将int
添加到{{1} }}。您知道所有字符串实际上包含string
的事实并不重要,因为表达式int
可能明智地评估为1+'1'
或'11'
,而Python赢得了#{1}}。猜猜哪个。
当你在每一行中读到时,你应该将每个字符串转换为int。那应该解决你的问题