Python練習(九)——面向物件,檔案操作與資料庫操作
- 面向物件,檔案操作與資料庫操作複習題目:
檔案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--練習--列表排序sort,sorted,reverse=true,reverse
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):