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

yipeiwu_com6年前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']

相关文章

跟老齐学Python之坑爹的字符编码

跟老齐学Python之坑爹的字符编码

字符编码,在编程中,是一个让学习者比较郁闷的东西,比如一个str,如果都是英文,好说多了。但恰恰不是如此,中文是我们不得不用的。所以,哪怕是初学者,都要了解并能够解决字符编码问题。...

Python将8位的图片转为24位的图片实现方法

Python将8位的图片转为24位的图片实现方法

用的pytorch来训练deeplabv3+ 在做deeplabv3+的过程中,我的训练图片是8位的,如下图: 8位的: 24位的: 这样虽然在训练过程中能够正常训练。但是在评估过程...

Python中random模块生成随机数详解

Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。 random.random random.random()用于生成一个0到1的随机符点...

Python操作Mysql实例代码教程在线版(查询手册)

Python操作Mysql实例代码教程在线版(查询手册)

实例1、取得MYSQL的版本在windows环境下安装mysql模块用于python开发MySQL-python Windows下EXE安装文件下载复制代码 代码如下:# -*- cod...

mac 安装python网络请求包requests方法

mac 安装python网络请求包requests方法

如下所示: sudo easy_install requests 出现如图所示信息 done 即可愉快的使用 requests了 以上这篇mac 安装python网络请求...