读取输入文件并写入输出文件 - Python

时间:2018-02-27 17:19:26

标签: python input output

我有一个输入文件(input.txt),其中包含以下信息:

  • 学生人数(第一行)
  • 考试成绩数(第二行)
  • 学生姓名和分数列表

所以文本文件看起来像这样

4
5

Jane Doe,80,75,90,100,95,68
Sara Jones,65,80,72,90,75,80
Bill Smith,50,70,90,70,55,90
John Foles,95,90,85,80,88

我正在尝试创建一个python程序,它将读取此信息,并将某些值(类平均分数,学生姓名,学生分数等)输出到另一个文件(output.txt)。

我一直在努力,我永远无法让我的程序完成我需要的一切。例如,我只能输出班级平均值,或仅输出一个学生的分数。我无法弄清楚如何输出多个功能。

我真的可以使用一些帮助。

1 个答案:

答案 0 :(得分:0)

您将要使用Pandas(另请参阅Pandas Manual)。

首先,将以下内容复制到剪贴板:

Jane Doe,80,75,90,100,95,68
Sara Jones,65,80,72,90,75,80
Bill Smith,50,70,90,70,55,90
John Foles,95,90,85,80,88

接下来,运行以下脚本:

#%% Load Your Data
import pandas as pd
df = pd.read_clipboard(sep = ',')

# YOU WILL HAVE TO LOAD YOUR ACTUAL DATA AS FOLLOWS:
# file_path = 'path/to/your/file.txt'
# df = pd.read_csv() 

number_of_students = df.shape[0]
number_of_tests = df.shape[1] -1  # This is the number of columns you have
score_names = ['score' + str(number+1) for number in range(number_of_tests)]
df.columns = ['student'] + score_names # Prepares the column names
df.set_index('student',inplace=True) # Makes the student names the index

#%% Calculate Maximum, Minimum and Average Class Score per test    
score_summaries = df.describe()

#%% Calulate the average score for all students across all tests
average_exam_score = df.mean().mean()

#%% A single students' score
df.loc['Sara Jones']

该脚本将计算您的几个请求。它没有做的一件事就是加载你的文件(你必须删除包含学生数量和测试分数的行,但不用担心,它会从分数数据本身重新计算)。我已经在评论中提供了关于如何执行此操作的提示,并留给您实施。

我鼓励您仔细阅读并探索删除某些内容或更改其他内容的内容。

最后,我代表SO社区说欢迎!我知道你好像是一个艰难的开始(包括所有的投票和所有)但是不要让你沮丧。阅读How to ask a good question,请回来,帮助我们一起学习!