我的文件输入和输出有问题

时间:2014-11-10 18:08:41

标签: python math python-3.4

我在python中的代码遇到了一些问题。我刚刚开始在课堂上学习输入和输出,以及如何从文本文件中读取数据中的python(几乎没有。我仍然是一个巨大的初学者)。无论如何,我的任务是我必须让我的程序读取文件中的数据并通过我的程序运行它。问题是,我不知道如何做到这一点,并想知道你们是否可以帮助我。文本文件只包含python在我的程序中使用的大量数字。我的程序找到给它的数字列表的均值,中位数和标准差。现在,我的教授不是用户输入数据,而是希望python使用已经预先写好的文件中的数据。

我的代码:

    import math

def mean(values):
    average = sum(values)*1.0/len(values)
    return average

def deviation(values):
    length = len(values)
    m = mean(values)
    total_sum = 0

    for i in range(length):
        total_sum += (values[i]-m)**2

    root = total_sum*1.0/length
    return math.sqrt(root)

def median(values):
    if len(values)%2 != 0:
        return sorted(values)[len(values)//2]
    else:
        midavg = (sorted(values)[len(values)//2] + sorted(values)[len(values)//2-1])//2.0
        return midavg

def main():
    x = [15, 17, 40, 16, 9]
    print (mean(x))
    print (deviation(x))
    print (median(x))

main()

现在,我必须编辑我的代码,以便打开文件,获取数据,并通过我的方程式读取数据。唯一的问题是,我不知道如何做到这一点。有人可以帮忙吗?

我自己尝试过基本的输入和输出,但是在帮助我了解更大的情况时并没有公正。

def main():
 total=0   
    input = open('Stats.txt')
    for nextline in input:
        mylist = nextline.split()
        for n in mylist:
           total+=int(n)
 print(total)

1 个答案:

答案 0 :(得分:0)

您必须从文件中填写您的列表。

打开文件并遍历这些行。将该行的内容转换为integer并将其附加到您的列表中。如果您没有对数据进行转换,那么您将获得字符串以及那些不会使用数学运算的人。关闭你的文件。

现在使用您的列表。

filename = 'newfile.txt'
data = []
source = open(filename)
for line in source:
    data.append(int(line))
source.close()

print(mean(data))
print(deviation(data))
# more stuff with data

有一种方法可以让Python为您关闭文件,这样您就不必记住它。

with open(filename) as source:
    for line in source:
        data.append(int(line))

根据你的编辑,这可能不是你想要的。如果数字在一行中,而不是每行一个数字,那么您必须采用不同的方法(split)。