从零学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('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']

时间: 2024-12-18 04:33:34

从零学python系列之数据处理编程实例(一)_python的相关文章

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

在上一节从零学python系列之数据处理编程实例(一)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年月 数据准备:分别建立四个文本文件               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               julie2.txt        Jul

从零学python系列之浅谈pickle模块封装和拆封数据对象的方法_python

封装是一个将Python数据对象转化为字节流的过程,拆封是封装的逆操作,将字节文件或字节对象中的字节流转化为Python数据对象,不要从不收信任的数据源中拆封数据.可以封装和拆封几乎任何Python数据对象,主要包括:     None , True,False    整数,浮点数,复数    字符串,字节,ByteArray对象    元组,列表,集合,包含可封装对象的字典    在一个模块的顶层定义的函数    在一个模块的顶层定义的内置函数    那是在一个模块的顶层定义的类    __d

从零学python系列之新版本导入httplib模块报ImportError解决方案_python

之前用Python 2.7版本的httplib做接口测试时,运行代码都是正常的, 最近开始用Python 3.3之后,再去看以前的代码,发现import httplib出现错误:Unresolved import :httplib, 运行代码时也报错:ImportError: No module named 'httplib' 查找各种资料发现原来Python 2.x中的"httplib"模块在Python 3.x中变成了"http.client",就怪之前只了解了

从零学python系列之教你如何根据图片生成字符画_python

说下思路吧: 原图->灰度->根据像素亮度-映射到指定的字符序列中->输出.字符越多,字符变化稠密.效果会更好.如果根据灰度图的像素亮度范围制作字符画,效果会更好.如果再使用调色板,对字符进行改色,就更像原图了. 这是原图:  这是生成的字符画: 废话不多说,直接上代码: 复制代码 代码如下: import Imagechars =" ...',;:clodxkLO0DGEKNWMM"fn=r'c:\users\liabc\desktop\jianbing.png'f

从零学python系列之从文件读取和保存数据_python

在HeadFirstPython网站中下载所有文件,解压后以chapter 3中的"sketch.txt"为例:   新建IDLE会话,首先导入os模块,并将工作目录却换到包含文件"sketch.txt"的文件夹,如C:\\Python33\\HeadFirstPython\\chapter3 复制代码 代码如下: >>> import os>>> os.getcwd()    #查看当前工作目录'C:\\Python33'>

从零学Python之入门(四)运算_python

Python的运算符和其他语言类似 (我们暂时只了解这些运算符的基本用法,方便我们展开后面的内容,高级应用暂时不介绍) 数学运算 复制代码 代码如下: >>>print 1+9        # 加法 >>>print 1.3-4      # 减法 >>>print 3*5        # 乘法 >>>print 4.5/1.5    # 除法 >>>print 3**2       # 乘方     >&

从零学Python之入门(三)序列_python

sequence 序列 sequence(序列)是一组有顺序的元素的集合 (严格的说,是对象的集合,但鉴于我们还没有引入"对象"概念,暂时说元素) 序列可以包含一个或多个元素,也可以没有任何元素. 我们之前所说的基本数据类型,都可以作为序列的元素.元素还可以是另一个序列,以及我们以后要介绍的其他对象. 序列有两种:tuple(定值表: 也有翻译为元组) 和 list (表) 复制代码 代码如下: >>>s1 = (2, 1.3, 'love', 5.6, 9, 12,

跟老齐学Python之开始真正编程_python

通过对四则运算的学习,已经初步接触了Python中内容,如果看官是零基础的学习者,可能有点迷惑了.难道在IDE里面敲几个命令,然后看到结果,就算编程了?这也不是那些能够自动运行的程序呀? 的确.到目前为止,还不能算编程,只能算会用一些指令(或者叫做命令)来做点简单的工作.并且看官所在的那个IDE界面,也是输入指令用的. 列位稍安勿躁,下面我们就学习如何编写一个真正的程序.工具还是那个IDLE,但是,请大家谨记,对于一个真正的程序来讲,用什么工具是无所谓的,只要能够把指令写进去,比如用记事本也可以

跟老齐学Python之从if开始语句的征程_python

一般编程的教材,都是要把所有的变量类型讲完,然后才讲语句.这种讲法,其实不符合学习的特点.学习,就是要循序渐进的.在这点上,我可以很吹一通了,因为我做过教师,研究教育教学,算是有一点心得的.所以,我在这里就开始讲授语句. 什么是语句 在前面,我们已经写了一些.py的文件,这些文件可以用python来运行.那些文件,就是由语句组成的程序. 为了能够严谨地阐述这个概念,我还是要抄一段维基百科中的词条:命令式编程 命令式编程(英语:Imperative programming),是一种描述电脑所需作出