python编程数据处理_python系列之数据处理编程实例

要求:分别以james,julie,mikey,sarah四个学生的名字建立文本文件,分别存储各自的成绩,时间格式都精确为分秒,时间越短成绩越好,分别输出每个学生的无重复的前三个最好成绩,且分秒的分隔符要统一为“.”

数据准备:分别建立四个文本文件

james.txt    2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22

julie.txt       2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21

mikey.txt     2:22,3.01,3:01,3.02,3:02,3.02,3:22,2.49,2:38

sarah.txt     2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55

import os

os.chdir('D:\python') #将工作空间修改为文件所在目录

#定义函数get_filedata从文件中取值

def get_filedata(filename):

try:

with open(filename) as f: #with语句打开和自动关闭文件

data=f.readline()#从文件中逐行读取字符

return(data.strip().split(','))#将字符间的空格清除后,用逗号分隔字符

except IOError as ioerr:

print('File Error'+str(ioerr)) #异常处理打印错误

return(None)

#定义函数modify_time_format将所有文件中的时分表达方式统一为“分.秒”

def modify_time_format(time_string):

if "-" in time_string:

splitter="-"

elif ":" in time_string:

splitter=":"

else:

splitter="."

(mins, secs)=time_string.split(splitter) #用分隔符splitter分隔字符后分别存入mins和secs

return(mins +'.'+secs)

#get_prev_three 返回文件中排名前三的不重复的时间成绩

def get_prev_three(filename):

new_list=[modify_time_format(each_t) for each_t in get_filedata(filename)]

delete_repetition=set(new_list) #采用集合set函数删除新列表中的重复项,并生成新的集合

in_order=sorted(delete_repetition)

return(in_order[0:3])

#分别输出对应文件中排名前三的不重复的时间成绩

print(get_prev_three("james.txt"))

print(get_prev_three("julie.txt"))

print(get_prev_three("mikey.txt"))

print(get_prev_three("sarah.txt"))

输出结果:

['2.01', '2.22', '2.34']

['2.11', '2.23', '2.59']

['2.22', '2.38', '2.49']

['2.18', '2.25', '2.39']

要求2

文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年月

数据准备:建立一个文本文件

james2.txt     James Lee,2002-3-14,2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22

在上一节基础上,修改部分代码,将新要求实现如下:

import os

print(os.getcwd())

os.chdir('D:\python\data')

def get_filedata(filename):

try:

with open(filename) as f:

data=f.readline()

data_list=data.strip().split(',')

return({

"name":data_list.pop(0),

"data_of_birth":data_list.pop(0),

"times":str(sorted(set([modify_time_format(s) for s in data_list]))[0:3])

})

#use dictionary to store the name,data_of_birth,and times

except IOError as ioerr:

print('File Error'+ str(ioerr))

return(None)

james=get_filedata('james2.txt')

print(james2["name"] + "'s fastest times are:" + james["times"])

print(james["name"]+"'s birthday is" + james["data_of_birth"])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值