从零学python系列之数据处理编程实例(一)


Posted in Python onMay 22, 2014

要求:分别以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('C:\Python33\HeadFirstPython\hfpy_code\chapter5')   #将工作空间修改为文件所在的目录
#定义函数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)                                           #采用复制排序sorted函数对无重复性的新集合进行排序
    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']
Python 相关文章推荐
仅利用30行Python代码来展示X算法
Apr 01 Python
进一步理解Python中的函数编程
Apr 13 Python
实例讲解Python设计模式编程之工厂方法模式的使用
Mar 02 Python
python调用tcpdump抓包过滤的方法
Jul 18 Python
flask入门之文件上传与邮件发送示例
Jul 18 Python
python同时遍历数组的索引和值的实例
Nov 15 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
padas 生成excel 增加sheet表的实例
Dec 11 Python
python实现发送form-data数据的方法详解
Sep 27 Python
python使用正则表达式(Regular Expression)方法超详细
Dec 30 Python
Python基础之Socket通信原理
Apr 22 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 Python
Python学习笔记_数据排序方法
May 22 #Python
从零学Python之hello world
May 21 #Python
Python开发实例分享bt种子爬虫程序和种子解析
May 21 #Python
从零学Python之引用和类属性的初步理解
May 15 #Python
python中xrange和range的区别
May 13 #Python
Python中os和shutil模块实用方法集锦
May 13 #Python
Python中的jquery PyQuery库使用小结
May 13 #Python
You might like
15种PHP Encoder的比较
2007/03/06 PHP
php中截取中文字符串的代码小结
2011/07/17 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
用js重建星际争霸
2006/12/22 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
JS实现li标签的删除
2019/04/12 Javascript
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Python制作Windows系统服务
2017/03/25 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
python创建子类的方法分析
2019/11/28 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
业务员薪酬管理制度
2014/01/15 职场文书
节约电力资源的建议书
2014/03/12 职场文书
法人授权委托书
2014/09/16 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
干部个人考察材料
2014/12/24 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android