1. 程式人生 > >Python練習(九)——面向物件,檔案操作與資料庫操作

Python練習(九)——面向物件,檔案操作與資料庫操作

  1. 面向物件,檔案操作與資料庫操作複習題目:
    檔案score.dat中儲存的是100名學生的姓名和Python課、高數和英語成績。

(1)定義學生類,其中包含姓名、Python課、高數和英語成績及總分、均分資料成員,成員函式根據需要確定。

(2)讀入這名學生的成績,用物件列表進行儲存。

(3)求出各科和總分的最高分。

(4)請按總分的降序(高成績在前,低成績在後)排序

(5)在螢幕上顯示各科及總分的最高分,排序後的成績單(包括總分)儲存到檔案odered_score.dat中。

(6) 將檔案中的所有學生資訊, 儲存在mariadb資料庫中;

from itertools import
chain from random import * import pymysql def create_student_info(): def creat_name(): first = ['許', '張', '趙', '錢', '孫', '李', '朱', '楊'] second = ['彬', '群', '寧', '盼', '龍', '歡', '丹'] last = ['彬', '群', '寧', '盼', '龍', '歡', '丹', ' ', ' ', ' ', ' '] name = choice(first) + choice(second) + choice(last) return
name.rstrip() with open("score.dat", 'w+') as f: for i in range(100): name = creat_name() py_score = randint(40, 100) high_math_score = randint(40, 100) english_score = randint(40, 100) sum_score = int(py_score) + int(high_math_score) + int(english_score) ave_score = float(sum_score) f.write(name + ' '
+ str(py_score) + ' ' + str(high_math_score) + ' ' + str(english_score) + ' '+ str(sum_score) + ' ' + str(ave_score) + '\n') class Student(object): def __init__(self, name, py_score, high_math_score, english_score,sum_score,ave_score): self.name = name self.py_score = py_score self.high_math_score = high_math_score self.english_score = english_score self.sum_score = sum_score self.ave_score = float(ave_score) def __repr__(self): return '姓名:%s python成績:%s 高數成績:%s 英語成績:%s 總分:%s 平均分:%.2f' %(self.name,self.py_score, self.high_math_score,self.english_score,self.sum_score,self.ave_score) def main(): #建立100個學會資訊 create_student_info() #讀取學生資訊 with open('score.dat') as f: AllStudentInfo = [Student(*student_info.split(' ')) for student_info in f.readlines()] #輸出資訊 py_score_max = max(AllStudentInfo,key=lambda x:x.py_score).py_score high_math_score_max = max(AllStudentInfo, key=lambda x: x.high_math_score).high_math_score english_score_max = max(AllStudentInfo, key=lambda x: x.english_score).english_score sum_score_sorted = sorted(AllStudentInfo,key=lambda x:x.sum_score,reverse=True) print('python最高分:%s' %(py_score_max)) print('高數最高分:%s' % (high_math_score_max)) print('英語最高分:%s' % (english_score_max)) print('總分最高分:%s' %(sum_score_sorted[0].sum_score) + '\n') with open('odered_score.dat','w') as f: for info in sum_score_sorted: print(info) f.write(str(info)+'\n') with open('odered_score.dat','w+') as f: conn = pymysql.connect(user = 'root',password = 'westos',charset = 'utf8',db ='student',autocommit = True) cur = conn.cursor() info_table = 'create table student(姓名 varchar(20) not null,python成績 varchar(3),高數成績 varchar(3),英語成績 varchar(3),總分 varchar(3),平均分 varchar(5));' cur.execute(info_table) for line in f.readlines(): studentInfo_all = [i.split(':') for i in line.split()] studentInfo= list(chain(*studentInfo_all))[1::2] insertInfo = "insert into student values('%s', '%s', '%s', '%s', '%s', '%s');" %( studentInfo[0], studentInfo[1], studentInfo[2], studentInfo[3], studentInfo[4], studentInfo[5]) cur.execute(insertInfo) cur.close() conn.close() if __name__ == '__main__': main()

這裡寫圖片描述

相關推薦

Python練習()——面向物件檔案操作資料庫操作

面向物件,檔案操作與資料庫操作複習題目: 檔案score.dat中儲存的是100名學生的姓名和Python課、高數和英語成績。 (1)定義學生類,其中包含姓名、Python課、高數和英語成績及總分、均分資料成員,成員函式根據需要確定。 (2)讀入這名學

如果你是第一次接觸Python當中的面向物件請點選進來。

2018年7月29日15:49:49 今天有時間寫一篇關於Python面向物件入門的文章,其實面向物件是不屬於某一門程式語言的,而是一種程式設計思想,如果你是第一次接觸面向物件,你需要弄懂下面幾個問題: 什麼是面向物件,為什麼要使用面向物件? 什麼是類,為什麼要使用類?

初識Python面向物件父類子類(繼承)例子詳解

簡明Python中的列子,自己理解註釋了一下:供參考 class schoolmember:#父類     def __init__(self,name,age):#物件建立時馬上對此物件初始化         self.name=name         self.ag

python面向物件以及類的使用

物件(object),python中,一切皆物件。 物件分為兩個部分:靜態物件,動態物件 類: 表示具有相同屬性的方法和物件的集合。封裝物件的屬性和行為的載體,具有相同屬性和行為的稱為一類 面向物件程式設計的三大基本特點:封裝,繼承,多型。 封裝:保證類內部結構完整性,,使用類的使用者只能執行公開的

python day19--面向物件藉口封裝

#1.介面類,物件類。規範類中方法的統一。 # 第一版:三個類,每個類中有相同的方法 # class Alipay: # def __init__(self,money): # self.money=money # def pay(self): # pr

python day18--面向物件繼承

# class Animal: # breath = '呼吸' # # def __init__(self, name, sex, age): # self.name = name # self.sex = sex # self.age =

面向物件使用者互動的練習

練習 設計王者榮耀中的英雄類,每個英雄物件可以對其他英雄物件使用技能 具備以下屬性 英雄名稱,等級,血量 和Q_hurt,W_hurt,E_hurt 三個屬性,表示各技能的傷害量 具備以下技能 Q W E 三個技能都需要一個敵方英

18.python面對物件程式設計(一)—什麼是面向物件類和例項訪問限制

終於開始了python的核心內容了,前面都是細枝末節的小東西。先開始第一個話題,什麼是面向物件的程式設計(opp)。1)什麼是面向物件我們可以拿C語言這個典型的面向過程的程式語言來對比,面對同樣一個問題,”我吃飯“(原諒我是個吃貨)。面向過程關注的是吃這個動作。而面向物件關注

python中的面向物件(簡單類的建立以及內建方法私有屬性和私有方法的使用)

一、什麼面向物件和麵向過程? 面向物件:--誰來做? 相比較函式,面向物件是更大的封裝,根據職責在一個物件中封裝多個方法 1.在完成某一個需求前,首先確定職責--要做的事(方法) 2.根據職責確定不同的物件,在物件內部封裝不同的方法(多個) 3.最後完成程式碼

python--練習--列表排序sortsortedreverse=truereverse

python--練習--列表排序sorl=[] for i in range(3):x=int(input("shuru :"))l.append(x)print (l)print(sorted(l))print(sorted(l,reverse=True)l.sort()print(l)

週末班:Python基礎之面向物件進階

面向物件進階 型別判斷 issubclass 首先,我們先看issubclass() 這個內建函式可以幫我們判斷x類是否是y型別的子類。 class Base: pass class Foo(Base): pass class Bar(Foo):

python記錄_day15 面向物件初始

一、面向過程和麵向物件 1、面向過程 以我為中心,做一件事先幹什麼,在幹什麼,後幹什麼,有一套清楚完整的流程。核心是“過程”。 優點:將要解決的問題流程化, 編寫相對簡單 缺點:可擴充套件性差 2、面向物件 以物件為中心,做一件事不需要你清楚怎麼做,你建立能做這件事的物件即可。物件是具體的事物,它

python day15初識面向物件

1.面向物件和麵向過程 2.面向物件如何編寫 3.面向物件和麵向過程大PK 4.面向物件三大特徵一.面向物件和麵向過程(重點理解) 1.面向過程:一切以事物的流程為核心.核心就是"過程"二字,過程是指解決問題的步驟,即先幹什麼,後幹什麼.基於該思想編寫程式就好比在編寫一套流水線. 是一種機械式的程式設計思維

python學習之【第十七篇】:Python中的面向物件(一)

1.什麼是類和類的物件? 類是一種資料結構,我們可以用它來定義物件,後者把資料值和行為特性融合在一起,類是現實世界的抽象的實體以程式設計形式出現。例項是這些物件的具體化。類是用來描述一類事物,類的物件指的是這一類事物的一個個體。例如:“人”就是一個類,而男人,女人,小孩等就是“人”這個類的例項物件;再比如“

python-13 函式 面向物件

函式 允許遞迴 函式的定義 分類 內建函式 標準庫函式 庫函式 使用者自定義函式 函式的定義和呼叫 使用def語句定義函式 def 函式名(引數列表): 函式體 (語句) 形參之間用逗號做間隔 有沒有返回值的函式看函式有沒有return語句 練習,n階調和

Python(十二)面向物件高階(__slots__ | @property | 多重繼承 | 定製類 | 列舉)

使用__slots__ 正常情況下,當我們定義了一個class,建立了一個class的例項後,我們可以給該例項繫結任何屬性和方法,這就是動態語言的靈活性。先定義class: class Student(object): pass 然後,嘗試給例項繫結一個屬性: >&g

面向物件繼承多型封裝1

---恢復內容開始--- 繼承:       一個類可以被多個類繼承,一個類也可以有多個父類,父類裡面的方法屬性子類都可以用  1.單繼承      class Alimone: #父類 def __init__

python中的面向物件學習以及類的多型

接下來類的第三個重要的特性:多型(一種介面,多種實現) 多型性(polymorphisn)是允許你將父物件設定成為和一個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。簡單的說,就是一句話:允許將子類型別的指標賦值給父類型別的指標。

python中的面向物件學習之繼承例項講解

__author__ = "Yanfeixu" class School(object): # object是基類,所有的類都是繼承這個--新式類 def __init__(self,name,addr): self.name = name s

python中的面向物件學習以及類的繼承和繼承順序

繼承 首先編寫一串關於類的程式碼行: __author__ = "Yanfeixu" # class People: 經典類不用加(object) class People(object): #新式類 def __init__(self,name,age):