Python:如何计算文件中的数字之和?
如何计算.txt文件中的数字总和 文件中的数据格式为:Python:如何计算文件中的数字之和?,python,arrays,file,calculation,Python,Arrays,File,Calculation,如何计算.txt文件中的数字总和 文件中的数据格式为: 7 8 14 18 16 8 23 ... 我从文件中读取数据,并将每一行的值分配给“line”vatiable,但我想得到如下结果:result=7+8+14+… f = open('data.txt', 'r') #LOOP AND READ DATA FROM THE FILE for line in f: code 这基本上只是创建一个数字列表,其中每一行都是列表中的一个新条目。然后显示列表的总和。这
7
8
14
18
16
8
23
...
我从文件中读取数据,并将每一行的值分配给“line”vatiable,但我想得到如下结果:result=7+8+14+…
f = open('data.txt', 'r') #LOOP AND READ DATA FROM THE FILE
for line in f:
code
这基本上只是创建一个数字列表,其中每一行都是列表中的一个新条目。然后显示列表的总和。这是我现在能想到的最简洁的代码: (最后更新为处理
n
,谢谢,@JonClements!)
对于您拥有的代码结构,您还可以执行以下操作:
f = open('data.txt', 'r')
ans = 0
for line in f:
try:
ans += int(line.strip())
except ValueError:
pass
编辑:
由于与“n”的混淆已经消除,第一个示例可以简单到
with open('file.txt', 'r') as fin:
ans = sum(int(line) for line in fin)
甚至这一行:
ans = sum(int(line) for line in open('file.txt', 'r'))
但文件处理存在一定的风险,因此不强烈建议使用。这里有一个解决方案(考虑到所有行都是数字):
在智能手机上
with open(filepath) as f:
lines = f.readlines()
numbers = [int(line) for line in lines]
print(sum(numbers))
一个简单的解决方案是,根据steven和AChamp的建议,它还将处理每行末尾的\n
with open("abc.txt","r")as f:
print(sum(int(x) for x in f))
保持简单:
with open('data.txt', 'r') as f:
result = sum(map(int, f))
int
从f
映射到每一行上,然后sum()
将得到的整数相加。您的意思是int(line)
这不是C
。是的!对不起,我的主要语言是C和C。这是正确的。OP没有指定如何处理该部件。在这里使用if line.IsNumeric():
可能是一个潜在的解决方案。文件末尾的'n'
会发生什么?(而且对于fin
中的行就足够了,因为fin
支持一个iterable接口。我没有注意到!@MurphyAdam你能解释一下吗?@0605002。readlines()
将把所有行加载到内存中-你不需要这样做,因为你可以一边走一边对每行求和…另一部分是int('n'))
将引发一个异常…您也不需要。strip as int无论如何都不会考虑前导/尾随空格…您可能只需要求和(如果line.strip().isdigit(),则fin中的行的int(line))就可以了(或.isnumeric(),具体取决于)@0605002关于你的第二个例子……我还想让它除了ValueError
来捕捉pass
语句应该处理的最小数量……如果发生键盘中断或IOError
,你应该让它传播到能够处理它的东西,而不是吞下它。@StevenRumbalski正确更新我的答案谢谢!这正是我所需要的@Inder非常感谢。for x in f
就足够了。类似文件的对象支持iterable接口。这可以让我写打印(sum(map(int,f))
@MurphyAdam很高兴我能帮上忙:)@AChampion谢谢你提出的编辑建议,有适当的学分:)无需读入数据
。只需在with语句下完成这一切:即可用于f:…
中的行。也不需要.strip()
,因为int()
可以处理前导空格和尾随空格。我想计算所有数字的总和,“n”只是表示列表还在继续,7+8+14+-19-23…谢谢谢谢你,我不确定。我不得不与自动更正做很多斗争^^^谢谢你@Steven Rumbilski。但我得到了这个错误,并认为这是因为文件有多行要循环:以open('data.txt','r')作为fin:^SyntaxError:invalidsyntax@MurphyAdam当前位置我第二行忘记了一个右括号。这就是问题所在吗?不会是因为有多条线路sum()
在所有行上驱动迭代(通过对map()
的结果进行迭代间接实现)。Rumbilski是的,当然!我没有注意到。是的,这很简单,而且很有魅力^^再次感谢。
with open(filepath) as f:
lines = f.readlines()
numbers = [int(line) for line in lines]
print(sum(numbers))
with open ('data.txt', 'r') as f:
data = f.readlines()
sum = 0
for line in data:
sum += int(line.strip())
print(sum)
with open("abc.txt","r")as f:
print(sum(int(x) for x in f))
with open('data.txt', 'r') as f:
result = sum(map(int, f))