我有一个文本文件,其中包含的数据是
a b c d e
1 2 3 4 5
f g h i j
6 7 8 9 10
k l m n o
11 12 13 14 15
,所需的输出是0、15、0、40、0、65。
我的尝试
f=open("C:/Users/kaleemi/Desktop/text.txt","r+")
s=0
for line in f:
for i in line:
if i.isnumeric():
s=s+int(i)
else:
continue
print(s)
s=0
输出:0、15、0、31、0、20
请帮助我更正此代码。
答案 0 :(得分:3)
您的问题是您在每一行中加了位数,而不是数字。 split
以单独的编号显示,并将那些更改为int
。
s=0
for line in f:
for i in line.split():
if i.isnumeric():
s=s+int(i)
print(s)
s=0
输出:
0
15
0
40
0
65
请注意,我删除了无用的continue
。
如果需要在一行中输出,则需要将它们收集在一个列表中,并在阅读所有输入行之后将其打印出来。我保留了原始程序的格式。
是的,可以使用列表过滤器上的sum
来完成 。我还保持您当前的编程水平。
答案 1 :(得分:-1)
import numpy
with open("/Users/michael/Desktop/text.txt") as f:
data = f.readlines()
for line in data:
try:
l = list(map(float, line.rstrip().split(" ")))
mean = int(numpy.sum(l))
except ValueError:
mean = 0
print(mean)