Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 文件中组合元素的总和_Python_List_Text - Fatal编程技术网

Python 文件中组合元素的总和

Python 文件中组合元素的总和,python,list,text,Python,List,Text,我对Python非常陌生,我一直在为我的程序构建逻辑。我想学习,但我觉得我需要一些外部帮助。也许你们能帮我。这是作业/项目 列表SalesData.txt如下所示: 名字1 23 34 454 名称2 344 34 45 至少有5个不同的名字。但举个例子,这就行了 基本上,我需要列出所有数字的总数,然后,每个名字的总数 Output::在本例中使用示例 总计=所有数字的934和 名称1总计=名称1的511个数字之和 名称2总计=名称2的423个数字之和 我知道如何得到一个只包含数字的文件的总和,

我对Python非常陌生,我一直在为我的程序构建逻辑。我想学习,但我觉得我需要一些外部帮助。也许你们能帮我。这是作业/项目

列表SalesData.txt如下所示:

名字1 23 34 454 名称2 344 34 45 至少有5个不同的名字。但举个例子,这就行了

基本上,我需要列出所有数字的总数,然后,每个名字的总数

Output::在本例中使用示例

总计=所有数字的934和 名称1总计=名称1的511个数字之和 名称2总计=名称2的423个数字之和 我知道如何得到一个只包含数字的文件的总和,但当涉及到混合时,我非常困惑。另外,我如何在获取每个名字的总数时指定。我应该使用.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个数字处理一个字符串。我想知道,只有当它找到一条带浮点数的线时,如何求和

更新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”,如果它不是字符串,它将执行数字的常规求和。我一次只做一个程序,我希望能够使用提供的混合列表得到一个数字的总和,但是我被困在分析字符串作为字符串和浮点数作为浮点数的方面

假设名称是唯一的,您可以从文件中填写一个,以便键是名称,值是数字列表。这样就很容易得到每一项的总和,以及总和

要构建dict,您需要组装一个简单的解析器。例如:

def parse(fname):
    data = {}
    numbers = []
    for line in f:
       # figure out if line has name or number
       if ... # this is a number
           numbers.append(float(line))
       else:
           data[name] = numbers
    return data

这不是完整的代码,因为这是一个家庭作业问题。还请注意,您可能需要正确处理第一行中读取的第一个名称。

假设名称是唯一的,您可以从文件中填写一个,以便键是名称,值是数字列表。这样就很容易得到每一项的总和,以及总和

要构建dict,您需要组装一个简单的解析器。例如:

def parse(fname):
    data = {}
    numbers = []
    for line in f:
       # figure out if line has name or number
       if ... # this is a number
           numbers.append(float(line))
       else:
           data[name] = numbers
    return data

这不是完整的代码,因为这是一个家庭作业问题。另外请注意,您可能需要正确处理您在第一行读到的名字。

因为这是家庭作业,所以我将给出一般性指导

您不需要使用isdigit或isalpha。当您尝试在非整数的对象上使用int时会发生什么?好的,现在你有了一个区分两组的过程。 数字列表后面是否总是有相同数量的项目?如果不是的话,一个while循环可能是个好主意。 在这两种情况下,数据都具有什么样的质量,例如,用抽象的术语描述数据。哪些数据结构能够很好地映射到此类数据? 打破这一进程;最好创建两个易于阅读的函数,而不是一个难以阅读的函数。
祝你好运

因为这是家庭作业,所以我只给出一般的指导

您不需要使用isdigit或isalpha。当您尝试在非整数的对象上使用int时会发生什么?好的,现在你有了一个区分两组的过程。 数字列表后面是否总是有相同数量的项目?如果不是的话,一个while循环可能是个好主意。 在这两种情况下,数据都具有什么样的质量,例如,用抽象的术语描述数据。哪些数据结构能够很好地映射到此类数据? 打破这一进程;最好创建两个易于阅读的函数,而不是一个难以阅读的函数。 祝你好运

请注意,如果您有一个非整数值或负值,例如342.2或-342,.isdigit将返回False,因此这可能不是一个好的使用机制

正如Kreativitea所指出的,int可以用来从数字整数中识别单词,具体地说,但是考虑到浮点在数字可能是整数或浮点时更一般的情况下工作。

请注意,如果有非整数或负值,例如342.2或342,ISDING将返回false,因此,这可能不是一个好的使用机制


正如Kreativitea所指出的,int可以用来从数字整数中辨别单词,具体地说,但是考虑到浮点在数字可能是整数或浮点时更一般的情况下工作。

< P>关于更新2:这里有几个逻辑问题。

首先,如果stri:并不意味着我是一个字符串。。。。它意味着从i创建一个字符串;现在,如果结果字符串是非e 空空的

其次,我来自数据,它是文件行的列表。所以它一定是一根弦。这就是你读文件时得到的结果。在您告诉程序之前,不会尝试将各种符号解释为数字

第三,当这种转换失败时,它将通过引发异常而失败。您无法使用if块测试该功能。必须使用try/except异常处理

第四,每次你得到一个数字时,你都要尝试计算s,使用一个只有那个数字的元素列表。这并不是所有数字的总和。如果你想对几个数字求和,你必须先把这些数字放在一起

第五,使用lendata作为数字计数,将总和除以。这是错误的,因为这是文件中的行数,并且您已经说过其中一些行可能被排除在外。你只需要数一数数字,这同样需要先把列表放在一起


首先写一些可以给你数字列表的东西,然后在循环之外用sum和len对列表进行一次简单的操作。

关于更新2:这里有几个逻辑问题

首先,如果stri:并不意味着我是一个字符串。。。。它意味着从i创建一个字符串;现在,如果结果字符串为非空

其次,我来自数据,它是文件行的列表。所以它一定是一根弦。这就是你读文件时得到的结果。在您告诉程序之前,不会尝试将各种符号解释为数字

第三,当这种转换失败时,它将通过引发异常而失败。您无法使用if块测试该功能。必须使用try/except异常处理

第四,每次你得到一个数字时,你都要尝试计算s,使用一个只有那个数字的元素列表。这并不是所有数字的总和。如果你想对几个数字求和,你必须先把这些数字放在一起

第五,使用lendata作为数字计数,将总和除以。这是错误的,因为这是文件中的行数,并且您已经说过其中一些行可能被排除在外。你只需要数一数数字,这同样需要先把列表放在一起


首先写一些可以给你数字列表的东西,然后在循环之外,在列表中使用sum和len就可以了。

即使名称在项目中是唯一的,我也希望能够输入另一个文件,数据量相同,但名称和数字不同,格式相同。+我不太熟悉dict函数,你能详细说明一下吗?很抱歉-我有很多困难即使名称在项目中是唯一的,我希望能够输入另一个文件,具有相同数量的数据,但不同的名称和数字保持相同的格式我不太熟悉dict函数,你能详细说明一下吗?对不起,我有很多困难。谢谢!1.谢谢这是有道理的。是的,它包含::“Name”,然后是12行,表示一年中每个月的浮点数。谢谢!1.谢谢这是有道理的。是的,它包含::“Name”,然后是12行,表示一年中每个月的浮点数。谢谢!我不知道。isdigit在floats 343.2中使用时返回FALSE。我所有的数字都有小数,所以需要另一种方法。我很抱歉不得不问,这是我的家庭作业,但我从未使用int来区分数据类型,举个例子可以帮我解决这个问题!在Python中,如果可能的话,正确的测试方法是使用异常处理;谢谢你!我不知道。isdigit在floats 343.2中使用时返回FALSE。我所有的数字都有小数,所以需要另一种方法。我很抱歉不得不问,这是我的家庭作业,但我从未使用int来区分数据类型,举个例子可以帮我解决这个问题!在Python中,如果可能的话,正确的测试方法是使用异常处理;EAFP。