Python練習【6】【數據庫操作 | 文件讀寫】
阿新 • • 發佈:2019-01-17
self. com 高等數學 存儲 init cursor ins orm 復習題
1. 面向對象,文件操作與數據庫操作復習題目:
文件score.dat中保存的是100名學生的姓名和Python課、高數和英語成績。
(1)定義學生類,其中包含姓名、Python課、高數和英語成績及總分、均分數據成員,成員函數根據需要確定。
(2)讀入這名學生的成績,用對象列表進行存儲。
(3)求出各科和總分的最高分。
(4)請按總分的降序(高成績在前,低成績在後)排序
(5)在屏幕上顯示各科及總分的最高分,排序後的成績單(包括總分)保存到文件odered_score.dat中。
(6) 將文件中的所有學生信息, 保存在mariadb數據庫中;
import pymysql import random import os if not os.path.exists(‘./score.dat‘): with open(‘./score.dat‘,‘w+‘) as file: for i in range(100): file.write(‘St‘+str(i)+‘,‘+‘,‘.join([str(random.randint(20,100))for j in range(3)])+‘\n‘) # (1)定義學生類,其中包含姓名、Python課、高數和英語成績及總分、均分數據成員,成員函數根據需要確定。 class Student(object): def __init__(self,name,py_score,ma_score,en_score): self.name=name self.py_score = py_score self.ma_score = ma_score self.en_score = en_score @property def sum_score(self): return self.py_score+self.ma_score+self.en_score @property def even(self): return self.sum_score/3 # (2)讀入這名學生的成績,用對象列表進行存儲。 st1=Student(‘tom‘,13,23,24) with open(‘./score.dat‘,‘r‘) as file: score_data=file.readlines() score_li=[] for i in score_data: oneData=i.rstrip(‘\n‘).split(‘,‘) score_li.append(Student(oneData[0],int(oneData[1]),int(oneData[2]),int(oneData[3]))) # (3)求出各科和總分的最高分。 py_max=max([i.py_score for i in score_li]) ma_max=max([i.py_score for i in score_li]) en_max=max([i.py_score for i in score_li]) sum_max=max([i.sum_score for i in score_li]) #(4)請按總分的降序(高成績在前,低成績在後)排序 score_li=sorted(score_li,key=lambda x:-x.sum_score) # (5)在屏幕上顯示各科及總分的最高分,排序後的成績單(包括總分)保存到文件odered_score.dat中。 print(""" python課程最高分:{0} 高等數學課程最高分:{1} 英語課程最高分:{2} 總分最高分:{3} """.format(py_max, ma_max, en_max, sum_max)) with open(‘./odered_score.dat‘,‘w+‘) as file: for i in score_li: file.write(‘%s,%s,%s,%s,%s\n‘%(i.name,i.py_score,i.ma_score,i.en_score,i.sum_score)) file.seek(0,0) # (6) 將文件中的所有學生信息, 保存在mariadb數據庫中; ## 連接數據庫 con = pymysql.connect( host=‘localhost‘, user=‘root‘, passwd=‘redhat‘, autocommit=True, charset =‘utf8‘ ) cur = con.cursor() # 創建遊標 cur.execute(‘create database if not exists St_scores‘) # 創建數據庫 con.select_db(‘St_scores‘) # 選擇對應數據庫 cur.execute(‘create table if not exists scores_data(姓名 varchar(20),python float,高等數學 float,英語 float,總分 float)default charset=utf8‘) # 創建表 # 讀取文件中的數據並寫入數據表 with open(‘./odered_score.dat‘) as file: line_data=file.readlines() for onedata in line_data: data=onedata.rstrip(‘\n‘).split(‘,‘) data=[data[0]]+[float(i) for i in data[1:]] cur.execute(‘insert into scores_data values("%s",%f,%f,%f,%f)‘%(data[0],data[1],data[2],data[3],data[4]))
Python練習【6】【數據庫操作 | 文件讀寫】