欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

從零學(xué)python系列之?dāng)?shù)據(jù)處理編程實例(二)

 更新時間:2014年05月22日 09:10:04   作者:  
這篇文章主要介紹了python數(shù)據(jù)處理編程實例,需要的朋友可以參考下

在上一節(jié)從零學(xué)python系列之?dāng)?shù)據(jù)處理編程實例(一)的基礎(chǔ)上數(shù)據(jù)發(fā)生了變化,文件中除了學(xué)生的成績外,新增了學(xué)生姓名和出生年月的信息,因此將要成變成:分別根據(jù)姓名輸出每個學(xué)生的無重復(fù)的前三個最好成績和出生年月

數(shù)據(jù)準(zhǔn)備:分別建立四個文本文件

              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        Julie Jones,2002-8-17,2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21

              mikey2.txt      Mikey McManus,2002-2-24,2:22,3.01,3:01,3.02,3:02,3.02,3:22,2.49,2:38

              sarah2.txt      Sarah Sweeney,2002-6-17,2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55

 在上一節(jié)基礎(chǔ)上,修改部分代碼,將新要求實現(xiàn)如下:

復(fù)制代碼 代碼如下:

import os
print(os.getcwd())
os.chdir('C:\Python33\HeadFirstPython\hfpy_code\chapter6')  #將工作空間修改為文件所在的目錄

#定義函數(shù)get_filedata從文件中取值
def get_filedata(filename):
    try:
        with open(filename)  as f:        #with語句打開和自動關(guān)閉文件
            data=f.readline()                 #從文件中逐行讀取字符
            data_list=data.strip().split(',')   #將字符間的空格清除后,用逗號分隔字符
            return({
                    "name" : data_list.pop(0),
                    "date_of_birth" : data_list.pop(0),
                    "times" : str(sorted(set([modify_time_format(s) for s in data_list]))[0:3])
                    })                                #使用字典將關(guān)聯(lián)的姓名,出生年月,時間鍵和值進(jìn)行存儲并返回
    except IOError as ioerr:
        print ('File Error' + str(ioerr))     #異常處理,打印錯誤
        return (None)

#定義函數(shù)modify_time_format將所有文件中的時分表達(dá)方式統(tǒng)一為“分.秒”
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)

#定義函數(shù)get_prev_three返回文件中排名前三的不重復(fù)的時間成績
def get_prev_three(filename):
    new_list=[modify_time_format(each_t) for each_t in get_filedata(filename)]   #采用列表推導(dǎo)將統(tǒng)一時分表達(dá)方式后的記錄生成新的列表
    delete_repetition=set(new_list)                                                                     #采用集合set函數(shù)刪除新列表中重復(fù)項,并生成新的集合
    in_order=sorted(delete_repetition)                                                               #采用復(fù)制排序sorted函數(shù)對無重復(fù)性的新集合進(jìn)行排序
    return (in_order[0:3])     

#輸出james的排名前三的不重復(fù)成績和出生年月
james = get_filedata('james2.txt')
print (james["name"]+"'s fastest times are: " + james["times"])
print (james["name"] + "'s birthday is: "  + james["date_of_birth"])

#輸出julie的排名前三的不重復(fù)成績和出生年月
julie = get_filedata('julie2.txt')
print (julie["name"]+"'s fastest times are: " + julie["times"])
print (julie["name"] + "'s birthday is: "  + julie["date_of_birth"])

#輸出mikey的排名前三的不重復(fù)成績和出生年月
mikey = get_filedata('mikey2.txt')
print (mikey["name"]+"'s fastest times are: " + mikey["times"])
print (mikey["name"] + "'s birthday is: "  + mikey["date_of_birth"])

#輸出sarah的排名前三的不重復(fù)成績和出生年月
sarah = get_filedata('sarah2.txt')
print (sarah["name"]+"'s fastest times are: " + sarah["times"])
print (sarah["name"] + "'s birthday is: "  + sarah["date_of_birth"])

通過建立繼承內(nèi)置list的類AthleteList,將方法定義在類中實現(xiàn)相同功能:

復(fù)制代碼 代碼如下:

import os
print(os.getcwd())
os.chdir('C:\Python33\HeadFirstPython\hfpy_code\chapter6')  #將工作空間修改為文件所在的目錄

#定義類AthleteList繼承python內(nèi)置的list
class AthleteList(list):
    def __init__(self, name, dob=None, times=[]):
        list.__init__([])
        self.name=name
        self.dob=dob
        self.extend(times)
    def get_prev_three(self):
        return (sorted(set([modify_time_format(t) for t in self]))[0:3])

def get_filedata(filename):
    try:
        with open(filename)  as f:        #with語句打開和自動關(guān)閉文件
            data=f.readline()                 #從文件中逐行讀取字符
            data_list=data.strip().split(',')   #將字符間的空格清除后,用逗號分隔字符
            return(
                   AthleteList(data_list.pop(0), data_list.pop(0), data_list)
                   )                                #使用字典將關(guān)聯(lián)的姓名,出生年月,時間鍵和值進(jìn)行存儲并返回
    except IOError as ioerr:
        print ('File Error' + str(ioerr))     #異常處理,打印錯誤
        return (None)

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)

james = get_filedata('james2.txt')
print (james.name+"'s fastest times are: " + str(james.get_prev_three()))

julie = get_filedata('julie2.txt')
print (julie.name+"'s fastest times are: " + str(julie.get_prev_three()))

mikey = get_filedata('mikey2.txt')
print (mikey.name+"'s fastest times are: " + str(mikey.get_prev_three()))

sarah = get_filedata('sarah2.txt')
print (sarah.name+"'s fastest times are: " + str(sarah.get_prev_three()))

相關(guān)文章

  • 如何定義TensorFlow輸入節(jié)點

    如何定義TensorFlow輸入節(jié)點

    今天小編就為大家分享一篇如何定義TensorFlow輸入節(jié)點,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • win系統(tǒng)下為Python3.5安裝flask-mongoengine 庫

    win系統(tǒng)下為Python3.5安裝flask-mongoengine 庫

    MongoEngine 是一個用來操作 MongoDB 的 ORM 框架,如果你不知道什么是 ORM,可以參考 Flask-SQLAlchemy 一節(jié)。在 Flask 中,我們可以直接使用 MongoEngine,也可使用 Flask-MongoEngine ,它使得在 Flask 中使用 MongoEngine 變得更加簡單。
    2016-12-12
  • Python常見排序操作示例【字典、列表、指定元素等】

    Python常見排序操作示例【字典、列表、指定元素等】

    這篇文章主要介紹了Python常見排序操作,結(jié)合實例形式總結(jié)分析了Python針對字典、列表及指定元素等常見排序操作實現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08
  • Python?最短路徑的幾種求解方式

    Python?最短路徑的幾種求解方式

    本文主要介紹了Python?最短路徑的幾種求解方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • python實現(xiàn)查找所有程序的安裝信息

    python實現(xiàn)查找所有程序的安裝信息

    本文給大家分享的是使用python通過注冊表信息實現(xiàn)快速查找windows應(yīng)用程序的安裝信息的方法和代碼示例,有需要的小伙伴可以參考下
    2020-02-02
  • python離線安裝外部依賴包的實現(xiàn)

    python離線安裝外部依賴包的實現(xiàn)

    今天小編就為大家分享一篇python離線安裝外部依賴包的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python腳本讀取Consul配置信息的方法示例

    Python腳本讀取Consul配置信息的方法示例

    本文主要介紹了Python腳本讀取Consul配置信息的方法示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • python PIL/cv2/base64相互轉(zhuǎn)換實例

    python PIL/cv2/base64相互轉(zhuǎn)換實例

    今天小編就為大家分享一篇python PIL/cv2/base64相互轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python中的try except與R語言中的tryCatch異常解決

    python中的try except與R語言中的tryCatch異常解決

    這篇文章主要為大家介紹了python中的try except與R語言中的tryCatch異常解決的方式及分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • Python上下文管理器和with塊詳解

    Python上下文管理器和with塊詳解

    這篇文章主要為大家詳細(xì)介紹了Python上下文管理器和with塊的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評論