zoukankan      html  css  js  c++  java
  • python学习_数据处理编程实例(一)

    目的:用一个实例总结学习到的with语句,函数,列表推导,集合,排序,字符分割等内容

    要求:分别以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']

    参考资料:HeadFirstPython系列书籍chapter 5    

  • 相关阅读:
    找出2n+1个数中不成对的那个(升级版)
    找出2n+1个数中不成对的那个
    随手记,完美的记账软件
    NOD32强制卸载工具使用方法【转】
    中医养生重在养“气”【灵枢针灸-袁医生】
    美国大学对本科生培养的12条标准【转】
    Windows软件使用Q&A集锦【持续更新】
    VLSI和ASIC的区别(转)
    Verilog 模块参数重定义(转)
    FPGA技术的一些基本概念(综合、BlackBox)(转)
  • 原文地址:https://www.cnblogs.com/liutong3310/p/3738372.html
Copyright © 2011-2022 走看看