我是 Python 的新手,一直在为我的程序构建逻辑。我想学习,但我觉得我需要一些外部帮助。也许你们可以帮助我。这是家庭作业/项目。
列表 (SalesData.txt)
如下所示:
- 姓名 1
- 23
- 34
- 454
- 姓名 2
- 344
- 34
- 45
并且至少有 5 个不同的名称。但是对于示例,这就可以了。
基本上,我需要计算出所有数字的总和,然后是每个名字的总和。
输出::在这种情况下(使用示例)
- 总计 = 934(所有数字的总和)
- 姓名 1 总计 = 511(姓名 1 的数字总和)
- 姓名 2 总数 = 423(姓名 2 的数字总和)
我知道如何获取仅包含数字的文件的总和,但是当涉及到混合时,我感到非常困惑。另外,我如何指定获取每个 "name"
的总数。我应该使用 .isdigit()
和 .isalpha()
来告诉列表什么时候求和什么时候不求和吗?
任何建议都会对我有帮助!谢谢!
更新 到目前为止,这是我的代码:
data = []
data = open("SalesData.txt").read().split()
for i in data:
s = sum([ float(i) ])
print "Sum=" , s
print "Avg=" , s/len(data)
这仅在文件全部为数字时有效,这很容易对内容求和。但请记住,我每 12 个数字处理一个字符串。我正在尝试弄清楚如何仅在找到带有 float 的行时才进行求和。
更新 #2
我仍然需要一些指导!我开始以我自己的方式结束一切,但我发现了一些非常基本的问题(我确定)
data = []
data = open("SalesData.txt").read().split()
for i in data:
if str(i):
print 'This one is Letter'
elif float(i):
s = sum([ float(i) ])
print "Sum=" , s
print "Avg=" , s/len(data)
我知道这个例子行不通,我想知道为什么。我正在尝试分析列表。 如果'i'是一个字符串,程序将(在这个例子中打印'Letter')如果它不是一个字符串,它将计算数字的常规总和。我当时正在处理这个程序,我希望能够使用混合提供的列表获得数字的总和,但我停留在将字符串分析为字符串并将 float 分析为 float 的方面。
最佳答案
请注意,如果您有一个非整数或负值(例如 342.2 或 -342),.isdigit()
将返回 False
,因此这可能不是一个良好的使用机制。
正如 Kreativitea 所指出的,int()
可用于从数字(特别是整数)中辨别单词,但考虑到 float()
可以在更一般的情况下工作数字可能是整数或 float 的情况。
关于python - 文件中组合元素的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13662719/