如何从Python 3.5.2中的文本文件创建平均值?

如何从Python 3.5.2中的文本文件创建平均值?,python,Python,我已经为此挣扎了两天,似乎找不到任何帮助。我需要在文件中搜索学生ID(1001是我正在使用的测试ID),然后将出现在学生ID下的每一行中的数字加在一起,以获得平均值 filename = input("Enter file name: \n" "Example: Grade Data.txt \n") myFile = open(filename, "r") selectSID = input("Enter SID: \n") gradesNum = m

我已经为此挣扎了两天,似乎找不到任何帮助。我需要在文件中搜索学生ID(1001是我正在使用的测试ID),然后将出现在学生ID下的每一行中的数字加在一起,以获得平均值

filename = input("Enter file name: \n"
                 "Example: Grade Data.txt \n")
myFile = open(filename, "r")    
selectSID = input("Enter SID: \n")
gradesNum = myFile.read().count(selectSID)
grades = myFile.read()
gradetotal = sum()
average = (gradetotal/gradesNum)
print(average)
正在打开的文本文件如下所示:

1001
95
1002
99
1001
96
1002
0
1001
84
1002
25
1001
65
1002
19

这看起来像是家庭作业,所以我不想为您编写代码,但这里有一个伪代码(有多种方法可以实现您想要的,这只是一个简单的初级代码):

一些有用的参考资料:


这看起来像是家庭作业,所以我不想为您编写代码,但这里有一个伪代码(有多种方法可以实现您想要的,这只是一个简单的入门级代码):

一些有用的参考资料:

输出:

在这一点上,您可以求和、求平均值、求最大值或求最小值

输出:


在这一点上,你可以任意求和、求平均、求最大值或求最小值。

请不要在作业中使用此代码(使用@Aditya的方法);在使用高级库之前,您需要先学习基础知识。然而,我刚刚了解了collections.defaultdict,我想使用它。在
defaultdict
上观看精彩的演示

import collections
import statistics

# This little guy will hold all of our grades
# https://youtu.be/lyDLAutA88s is a great video using it
grades = collections.defaultdict(list)

def get_next_num(file):
    """get the next line of a file,
    remove any whitespace surrounding it,
    and turn it into an integer"""
    return int(next(file).strip())

with open('tmp.txt') as myfile:
    while True:
        try:
            # seriously, watch the video
            grades[get_next_num(myfile)].append(get_next_num(myfile))
        except StopIteration: # end of file
            break
student_id = int(input('Enter student ID. Choices: {} : '.format(list(grades.keys()))))
print(statistics.mean(grades[student_id]))

请不要在作业中使用此代码(使用@Aditya的方法);在使用高级库之前,您需要先学习基础知识。然而,我刚刚了解了collections.defaultdict,我想使用它。在
defaultdict
上观看精彩的演示

import collections
import statistics

# This little guy will hold all of our grades
# https://youtu.be/lyDLAutA88s is a great video using it
grades = collections.defaultdict(list)

def get_next_num(file):
    """get the next line of a file,
    remove any whitespace surrounding it,
    and turn it into an integer"""
    return int(next(file).strip())

with open('tmp.txt') as myfile:
    while True:
        try:
            # seriously, watch the video
            grades[get_next_num(myfile)].append(get_next_num(myfile))
        except StopIteration: # end of file
            break
student_id = int(input('Enter student ID. Choices: {} : '.format(list(grades.keys()))))
print(statistics.mean(grades[student_id]))
最新答复:

好吧,我想我现在明白你的问题了。。。同样的事情,除了我建议使用一个列表,只要文件保持相同的格式(SID、Score等等),这应该可以工作,并且只需要对Python有最低限度的了解(即没有像glob这样奇怪的库):

这将返回一个整数,或与您的文件一起打印:

Occurrences: 4


不管这是否回答了您的问题,我学习基础知识的小贴士是了解文件类型及其功能。 在您的例子中,您主要需要关注字符串(文本)和整数(整数)。使用pythonsidle,声明一个变量,键入名称和一个点,并使用tab滚动浏览每个可用函数。 例如:

>>> myString = "Hello World"
>>> myString.[TAB]  #--> [Context Menu Here]
在列表中选择一个表单后,输入一个左括号“(”,它将简要说明它的作用



希望这能有所帮助,并对冗长的回复表示歉意(自从你说你是noob以来,我一直在试图解释并给出提示)

更新的答案:

好的,我想我现在理解你的问题了……同样的事情,除了我建议使用列表,只要文件保持相同的格式(SID、Score等),这应该可以工作,并且需要对Python的最低理解(即没有像glob这样奇怪的库):

这将返回一个整数,或与您的文件一起打印:

Occurrences: 4


不管这是否回答了您的问题,我学习基础知识的小贴士是了解文件类型及其功能。 在您的例子中,您主要需要关注字符串(文本)和整数(整数)。使用Pythons IDLE,声明一个变量,键入名称和一个点,并使用tab滚动浏览每个可用函数。 例如:

>>> myString = "Hello World"
>>> myString.[TAB]  #--> [Context Menu Here]
在列表中选择一个表单后,输入一个左括号“(”,它将简要说明它的作用




希望这能有所帮助,并且为冗长的回答感到抱歉(自从你说你是一个noob以来,我一直在试图解释并给出一些提示)

你没有给
sum()提供一个参数
,它的总和应该是多少?如果你的老师没有教它,可能是在课本上?我不敢相信他会为一些没有教过的东西做家庭作业。你没有对
sum()进行论证
,你认为它的总数是多少?如果你的老师没有教它,也许它在课本上?我不敢相信他会给一些没有教过的东西做家庭作业。特别是,检查。特别是,检查。你在哪里计算平均分数?@Barmar抱歉,我刚刚计算出了其他数字。Answer更新。非常基本。冗长,但我建议您在处理函数、模块/库(如“导入glob”或其他随机垃圾(如其他答案中列出的那些)之前,先了解更多的核心概念,然后再编写程序;)你在哪里计算平均分数?@Barmar抱歉,我刚刚计算出其他数字。答案已更新。非常基本。冗长,但我建议你在处理函数、模块/库(如“导入glob”)或其他一些随机垃圾之前,先用这种方法编写程序,直到你理解更多的核心概念(与其他答案中列出的答案相同)。;)
>>> myString = "Hello World"
>>> myString.[TAB]  #--> [Context Menu Here]