使用python求和和平均值

使用python求和和平均值,python,Python,我已经写了一段代码,可以从 文本文件并生成数字列表 我的挑战是对连续的数字求和,然后找到 数字的平均值 我不允许使用sum函数,而且我是python新手。。 这是我到目前为止写的代码 我可以通过列表添加哪些内容 错误:“第24行浮动对象不可编辑”。。。第24行是循环的第4行fnum是浮点。它不是数组,因此它是不可iterable的,并且不能在for循环中迭代 您可能不需要数组来确定总数和平均数: fname = "c:\\mbox-short.txt" fh = op

我已经写了一段代码,可以从 文本文件并生成数字列表

  • 我的挑战是对连续的数字求和,然后找到 数字的平均值

  • 我不允许使用sum函数,而且我是python新手。。 这是我到目前为止写的代码

  • 我可以通过列表添加哪些内容


    错误:“第24行浮动对象不可编辑”。。。第24行是循环的第4行

    fnum
    是浮点。它不是数组,因此它是不可iterable的,并且不能在for循环中迭代


    您可能不需要数组来确定总数和平均数:

    fname = "c:\\mbox-short.txt"
    fh = open(fname)
    
    count = 0
    total = 0
    for line in fh:
        if line.startswith("X-DSPAM-Confidence:"):
            xpos = line.find(' ')
            num = line[xpos : ]
            fnum = float(num)       
            total += fnum
            count += 1
    
    print("Total = " + str(total))
    print("Average = " + str(total / count))
    print("Number of items = " + str(count))
    

    fnum
    是一个浮点数。它不是数组,因此它是不可iterable的,并且不能在for循环中迭代


    您可能不需要数组来确定总数和平均数:

    fname = "c:\\mbox-short.txt"
    fh = open(fname)
    
    count = 0
    total = 0
    for line in fh:
        if line.startswith("X-DSPAM-Confidence:"):
            xpos = line.find(' ')
            num = line[xpos : ]
            fnum = float(num)       
            total += fnum
            count += 1
    
    print("Total = " + str(total))
    print("Average = " + str(total / count))
    print("Number of items = " + str(count))
    

    首先,一个打开的文件只能执行一次,您的代码显示了4个循环,以fh:中的行的
    开头。在第一个循环之后,文件指针将到达文件的末尾,下面的循环应该立即返回。因此,应首选带有

    接下来在循环中的某个地方,您将在
    fnum
    中获得一个浮点值。只需在开始循环之前初始化
    total
    ,并在得到它时添加
    fnum

    total = 0
    with open(fname) as fh:
        for line in fh:
            if line.startswith("X-DSPAM-Confidence:"):
        #       print(line)
                xpos = line.find(' ')
        #       print(xpos)
                num = line[xpos : ]
        #       print(float(num))
                fnum = float(num)       
        #       print(fnum)
                total += fnum
        #       print(total)
    

    使用
    可确保文件在循环结束时完全关闭。

    首先,打开的文件只能执行一次,并且您的代码显示4个循环,从fh:
    中的行开始。在第一个循环之后,文件指针将到达文件的末尾,下面的循环应该立即返回。因此,应首选带有的

    接下来在循环中的某个地方,您将在
    fnum
    中获得一个浮点值。只需在开始循环之前初始化
    total
    ,并在得到它时添加
    fnum

    total = 0
    with open(fname) as fh:
        for line in fh:
            if line.startswith("X-DSPAM-Confidence:"):
        #       print(line)
                xpos = line.find(' ')
        #       print(xpos)
                num = line[xpos : ]
        #       print(float(num))
                fnum = float(num)       
        #       print(fnum)
                total += fnum
        #       print(total)
    

    with
    可确保文件在循环结束时完全关闭。

    在这种情况下,您不必使用startsWith。最好对文件的每一行使用拆分。每一行将把所有单词拆分成一个列表。然后使用您查找的索引,X-DSPAM-Confidence:。如果存在,则取相应的兴趣值。在这种情况下,它是索引编号1。代码如下:

    total = 0
    number_of_items = 0
    
    with open("dat.txt", 'r') as f:
        for line in f:
            fields = line.split()
            if fields != []:
                if fields[0] == "X-DSPAM-Confidence:":
                    number_of_items += 1
                    total += float(fields[1])
    
    print(total)
    print(number_of_items)      
    
    avg = (total/number_of_items)    
    print(avg)
    
    我将您的数据保存在一个名为“dat.txt”的文本文件中


    希望对你有帮助

    在这种情况下,您不必使用startsWith。最好对文件的每一行使用拆分。每一行将把所有单词拆分成一个列表。然后使用您查找的索引,X-DSPAM-Confidence:。如果存在,则取相应的兴趣值。在这种情况下,它是索引编号1。代码如下:

    total = 0
    number_of_items = 0
    
    with open("dat.txt", 'r') as f:
        for line in f:
            fields = line.split()
            if fields != []:
                if fields[0] == "X-DSPAM-Confidence:":
                    number_of_items += 1
                    total += float(fields[1])
    
    print(total)
    print(number_of_items)      
    
    avg = (total/number_of_items)    
    print(avg)
    
    我将您的数据保存在一个名为“dat.txt”的文本文件中



    希望对你有帮助

    代码“float object not iterable on line 24”有什么问题。。。第24行是我编辑的第4行。第一部分工作,我已经输出了列表。。我的挑战是不使用sum函数对列表中的成员求和。。然后找到平均值请同时上传文本文件示例。代码“float object not iterable on line 24”有什么问题。。。第24行是我编辑的第4行。第一部分工作,我已经输出了列表。。我的挑战是不使用sum函数对列表中的成员求和。。然后找到平均值请同时上传文本文件sample.print(fnum)输出27个浮点数的列表,如何在不使用求和函数的情况下将它们排列成数组或连续相加。我刚刚尝试了这个方法,但仍然对最后一个for循环def figs()说not iterable:print(fnum)total=0 for I in figs:total+=int(I)print(total)在它出错的行上,
    fnum
    等于
    0.8475
    。如何将输出安排在一个数组中,以便使用for循环遍历它?您可能不需要数组来确定总数和平均值,我已更新了我的解决方案总数和平均值。print(fnum)输出27个浮点数的列表,,如何在不使用求和函数的情况下,将它们排列成一个数组或连续相加。我刚刚尝试了这个方法,但仍然对最后一个for循环def figs()说not iterable:print(fnum)total=0 for I in figs:total+=int(I)print(total)在它出错的行上,
    fnum
    等于
    0.8475
    。如何将输出安排在一个数组中,以便我可以使用for循环遍历它。您可能不需要数组来确定总数和平均值,我已更新了我的解决方案,即总数和平均值。感谢您的帮助。。有27行包含“X-DSPAM..”第一个代码给出了一条错误消息:::TypeError:undefined不是一个对象(计算'a.constructor')我注意到当我使用“with function”时出现了这个消息我的代码输出了27个浮点数的列表,我的挑战是将它们分组到一个数组中,这样我就可以使用for循环遍历它们loop@user1855085我修改了代码,并尝试将输出写入文本文件,以便读取它们,但在第20行遇到错误代码…((ExternalError:todo;尚未在第20行实现非读取打开))。。这是我在fh:if-line.startswith(“X-DSPAM-Confidence:”):count=count+1#print(count)if-line.startswith(“X-DSPAM-Confidence:”):#print(line)xpos=line.find(“”)#print(xpos)num=line[xpos:]#print(float(num))fnum=float(num)file=open)(“kxk.txt”,“w”)数据=f