MySQL數(shù)據(jù)庫教程(項目任務式版) 教案、習題答案、拓展知識 謝萍_第1頁
MySQL數(shù)據(jù)庫教程(項目任務式版) 教案、習題答案、拓展知識 謝萍_第2頁
MySQL數(shù)據(jù)庫教程(項目任務式版) 教案、習題答案、拓展知識 謝萍_第3頁
MySQL數(shù)據(jù)庫教程(項目任務式版) 教案、習題答案、拓展知識 謝萍_第4頁
MySQL數(shù)據(jù)庫教程(項目任務式版) 教案、習題答案、拓展知識 謝萍_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

******學校教師教案(學年第學期)課程名稱:數(shù)據(jù)庫原理及應用授課專業(yè):任課教師:所在系部:2025年9月

項目1數(shù)據(jù)庫基礎知識和MySQL安裝與配置任務名稱數(shù)據(jù)庫基礎知識教學目的掌握數(shù)據(jù)庫的基本概念。了解數(shù)據(jù)模型。掌握關系數(shù)據(jù)庫的基礎知識。教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:關系數(shù)據(jù)庫難點:專門的關系運算教學內(nèi)容設計課程引入:通過提出問題“日常生活和工作中哪些業(yè)務活動離不開數(shù)據(jù)庫的支持?”引入本課授課內(nèi)容:一、數(shù)據(jù)庫的基本概念1.數(shù)據(jù)2.數(shù)據(jù)庫3.數(shù)據(jù)庫管理系統(tǒng)4.數(shù)據(jù)庫系統(tǒng)二、認識數(shù)據(jù)模型1.概念模型實體、屬性、實體集、實體之間的聯(lián)系以及E-R圖。2.邏輯模型三、認識關系數(shù)據(jù)庫1.關系數(shù)據(jù)庫中的基本術語關系、屬性(字段)、元組(記錄)、分量、域、主關鍵字、外部關鍵字。2.關系的基本性質(zhì)3.關系運算傳統(tǒng)的集合運算:并、交、差和廣義笛卡兒積運算;專門的關系運算:選擇、投影、連接和除運算??偨Y(jié)課程內(nèi)容,重申重點、難點課后任務完成第1章習題,鞏固數(shù)據(jù)庫基礎知識任務名稱MySQL安裝與配置教學目的掌握MySQL安裝與配置的方法。掌握登錄與退出MySQL的方法。教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:登錄與退出MySQL難點:以root身份通過命令提示符窗口登錄MySQL的命令mysql教學內(nèi)容設計課程引入:通過“要創(chuàng)建或使用數(shù)據(jù)庫,必須安裝相應的數(shù)據(jù)庫管理系統(tǒng)”引入本課。授課內(nèi)容:一、下載MySQL安裝包二、安裝與配置MySQL三、登錄與退出MySQL1.啟動或停止MySQL2.使用超級管理員root身份登錄MySQL3.退出MySQL總結(jié)課程內(nèi)容,重申重點、難點課后任務在自己的電腦上安裝與配置MySQL,為后面章節(jié)的學習搭建好數(shù)據(jù)庫環(huán)境

項目2數(shù)據(jù)庫設計任務名稱數(shù)據(jù)庫設計教學目的了解數(shù)據(jù)庫設計階段。掌握E-R圖的繪制方法。掌握關系模式的設計方法。了解關系模式的規(guī)范化教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:如何分析和表達用戶需求如何將用戶需求抽象為E-R圖的形式將實體集之間的聯(lián)系轉(zhuǎn)換為關系模式的方法難點:全局E-R圖,將E-R圖轉(zhuǎn)換為關系模式的方法。教學內(nèi)容設計課程引入:通過提出問題“如何設計出滿足不同用戶應用需求的數(shù)據(jù)庫?”引入本課。授課內(nèi)容:一、認識數(shù)據(jù)庫設計1.需求分析2.概念結(jié)構(gòu)設計3.邏輯結(jié)構(gòu)設計4.物理結(jié)構(gòu)設計5.數(shù)據(jù)庫實施6.數(shù)據(jù)庫運行和維護設計一個完善的數(shù)據(jù)庫不可能一蹴而就,往往需要6個階段的多次反復。二、需求分析1.需求分析的任務和重點2.需求分析的方法三、概念結(jié)構(gòu)設計1.局部E-R圖設計2.全局E-R圖設計四、邏輯結(jié)構(gòu)設計1.關系模式設計2.關系模式的規(guī)范化五、項目案例--設計圖書館借還書管理管理數(shù)據(jù)庫1.需求分析(收集并分析數(shù)據(jù))2.概念結(jié)構(gòu)設計(繪制E-R圖)3.邏輯結(jié)構(gòu)設計(關系模式設計)總結(jié)課程內(nèi)容,重申重點、難點課后任務復習【項目案例】中設計的圖書館借還書管理數(shù)據(jù)庫,掌握繪制E-R圖轉(zhuǎn)換為關系模式的方法。有能力的同學完成【項目實踐】中學生成績管理數(shù)據(jù)庫的設計。項目3數(shù)據(jù)定義任務名稱創(chuàng)建和管理數(shù)據(jù)庫及數(shù)據(jù)表教學目的掌握創(chuàng)建和管理數(shù)據(jù)庫的相關語句。掌握創(chuàng)建和管理數(shù)據(jù)表的相關語句。教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:創(chuàng)建數(shù)據(jù)表的語句難點:MySQL支持的數(shù)據(jù)類型教學內(nèi)容設計課程引入:通過“設計人員設計的數(shù)據(jù)庫需要單獨創(chuàng)建”引入本課。授課內(nèi)容:一、創(chuàng)建和管理數(shù)據(jù)庫1.創(chuàng)建數(shù)據(jù)庫的語句2.顯示數(shù)據(jù)庫3.選擇數(shù)據(jù)庫4.修改數(shù)據(jù)庫5.刪除數(shù)據(jù)庫二、創(chuàng)建和管理數(shù)據(jù)表1.MySQL支持的數(shù)據(jù)類型2.設計數(shù)據(jù)表3.創(chuàng)建數(shù)據(jù)表4.查看數(shù)據(jù)表5.修改數(shù)據(jù)表6.復制數(shù)據(jù)表7.刪除數(shù)據(jù)表總結(jié)課程內(nèi)容,重申重點、難點課后任務掌握CREATTABLE語句,完成【項目案例】中圖書館借還書管理數(shù)據(jù)庫以及數(shù)據(jù)庫中5張表的創(chuàng)建。有能力的同學完成【項目實踐】中學生成績管理數(shù)據(jù)庫及數(shù)據(jù)表的創(chuàng)建。任務名稱數(shù)據(jù)完整性約束教學目的了解數(shù)據(jù)完整性約束的功能和作用。掌握建立數(shù)據(jù)完整性約束的方法。教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:建立主鍵約束、外鍵約束和檢查約束的語句。難點:外鍵約束教學內(nèi)容設計課程引入:通過提出問題“數(shù)據(jù)庫自己能夠識別出不滿足某些條件的數(shù)據(jù)嗎?”引入本課。授課內(nèi)容:一、認識數(shù)據(jù)完整性二、主鍵約束三、唯一約束四、外鍵約束五、檢查約束六、非空約束七、默認值約束八、刪除數(shù)據(jù)完整性約束九、【項目案例】圖書館借還書管理數(shù)據(jù)庫的數(shù)據(jù)定義1.設計數(shù)據(jù)表2.創(chuàng)建數(shù)據(jù)庫3.創(chuàng)建數(shù)據(jù)表4.指定數(shù)據(jù)完整性約束總結(jié)課程內(nèi)容,重申重點、難點課后任務完成【項目案例】中圖書館借還書管理數(shù)據(jù)庫5張表的數(shù)據(jù)完整性約束的創(chuàng)建。有能力的同學完成【項目實踐】中學生成績管理數(shù)據(jù)庫的完整性約束的創(chuàng)建。

項目4數(shù)據(jù)操作任務名稱數(shù)據(jù)操作教學目的熟練掌握INSERT、UPDATE和DELETE語句的使用。了解不同的數(shù)據(jù)完整性約束對數(shù)據(jù)操作結(jié)果的影響。教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:INSERT、UPDATE和DELETE語句難點:數(shù)據(jù)完整性約束對數(shù)據(jù)操作結(jié)果的影響教學內(nèi)容設計課程引入:通過“創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表之后,下一步是向數(shù)據(jù)表中插入數(shù)據(jù)”引入本課。授課內(nèi)容:一、插入數(shù)據(jù)1.插入一條完整的數(shù)據(jù)2.插入一條數(shù)據(jù)的部分字段值4.插入多條數(shù)據(jù)5.插入查詢結(jié)果中的數(shù)據(jù)6.插入并替換已存在的數(shù)據(jù)二、修改數(shù)據(jù)1.修改指定條件的數(shù)據(jù)2.修改全部數(shù)據(jù)三、刪除數(shù)據(jù)1.刪除滿足指定條件的數(shù)據(jù)2.刪除全部數(shù)據(jù)四、【項目案例】圖書館借還書管理數(shù)據(jù)庫的數(shù)據(jù)操作1.插入各張表中的數(shù)據(jù)(插入順序有什么要求)2.修改表中的數(shù)據(jù)(修改主鍵和外鍵字段值的結(jié)果如何)3.刪除表中的數(shù)據(jù)(刪除父表和子表的記錄的結(jié)果如何)總結(jié)課程內(nèi)容,重申重點、難點課后任務完成【項目案例】中圖書館借還書管理數(shù)據(jù)庫5張表的數(shù)據(jù)操作。有能力的同學完成【項目實踐】中學生成績管理數(shù)據(jù)庫中數(shù)據(jù)表的數(shù)據(jù)操作。

項目5數(shù)據(jù)查詢?nèi)蝿彰Q單表查詢、聚合函數(shù)和數(shù)據(jù)分組教學目的掌握SELECT語句的基本語法格式。熟練運用SELECT語句實現(xiàn)單表查詢。熟練運用聚合函數(shù)實現(xiàn)統(tǒng)計查詢。教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:SELECT語句的基本語法格式、簡單數(shù)據(jù)查詢、條件數(shù)據(jù)查詢、聚合函數(shù)難點:WHERE子句中查詢條件的設置,GROUPBY子句的分組查詢教學內(nèi)容設計課程引入:通過“用戶需要從一張表或多張表中按照指定的條件檢索出需要的數(shù)據(jù)”引入本課。授課內(nèi)容:一、數(shù)據(jù)查詢語句二、簡單數(shù)據(jù)查詢1.顯示全部字段的數(shù)據(jù)2.顯示指定字段的數(shù)據(jù)3.指定字段的別名4.顯示經(jīng)過計算的值5.消除查詢結(jié)果中的重復行6.限制查詢結(jié)果中的記錄條數(shù)7.對查詢結(jié)果進行排序三、條件數(shù)據(jù)查詢1.比較運算2.邏輯運算3.確定范圍4.字符串匹配5.空值判斷四、聚合函數(shù)1.COUNT函數(shù)2.SUM函數(shù)和AVG函數(shù)3.MAX函數(shù)和MIN函數(shù)五、數(shù)據(jù)分組1.單字段分組2.多字段分組3.HAVING子句總結(jié)課程內(nèi)容,重申重點、難點課后任務完成“例5-1”“例5-2”“例5-3”……和“例5-28”

任務名稱多表連接查詢、子查詢、聯(lián)合查詢教學目的掌握多表連接查詢的方法掌握子查詢和聯(lián)合查詢教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:連接運算、子查詢難點:四張表的內(nèi)連接查詢、子查詢的執(zhí)行順序教學內(nèi)容設計課程引入:通過提出問題“如果查詢結(jié)果的字段來自于多張不同的表,則需要通過連接運算將多張表進行連接。”引入本課。授課內(nèi)容:連接運算交叉連接內(nèi)連接外連接二、等值連接查詢?nèi)?、子查詢結(jié)果為單個值結(jié)果為多個值EXISTS子查詢四、聯(lián)合查詢五、【項目案例】圖書館借還書管理數(shù)據(jù)庫的數(shù)據(jù)查詢總結(jié)課程內(nèi)容,重申重點、難點課后任務完成【項目案例】中圖書館借還書管理數(shù)據(jù)庫的數(shù)據(jù)查詢。有能力的同學完成【項目實踐】中學生成績管理數(shù)據(jù)庫的數(shù)據(jù)查詢。

項目6視圖任務名稱視圖教學目的掌握視圖的概念和創(chuàng)建查詢視圖的方法。掌握對視圖的更新操作教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:創(chuàng)建視圖的方法、更新視圖難點:視圖是虛表的概念教學內(nèi)容設計課程引入:通過“視圖是從一張或多張基本表中導出的虛擬表”引入本課授課內(nèi)容:一、視圖概述二、創(chuàng)建和查詢視圖1.創(chuàng)建視圖2.查詢視圖三、更新視圖1.插入數(shù)據(jù)2.修改數(shù)據(jù)3.刪除數(shù)據(jù)四、修改視圖定義五、刪除視圖六、【項目案例】圖書館借還書管理數(shù)據(jù)庫的視圖總結(jié)課程內(nèi)容,重申重點、難點課后任務完成【項目案例】中圖書館借還書管理數(shù)據(jù)庫的視圖。有能力的同學完成【項目實踐】中學生成績管理數(shù)據(jù)庫的視圖。

項目7索引任務名稱第一節(jié)索引概述教學目的掌握索引的概念和索引分類。掌握索引的使用。教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:索引的概念和分類、創(chuàng)建索引難點:適合創(chuàng)建索引的字段特點教學內(nèi)容設計課程引入:通過“索引可以加快檢索的速度,提高數(shù)據(jù)庫系統(tǒng)的性能”引入本課。授課內(nèi)容:索引概述索引的概念索引的分類二、創(chuàng)建索引1.使用CREATEINDEX語句創(chuàng)建索引2.使用ALTERTABLE語句添加索引3.使用CREATETABLE語句創(chuàng)建索引三、查看索引四、刪除索引1.使用DROPINDEX語句刪除索引2.使用ALTERTABLE語句刪除索引五、【項目案例】圖書館借還書管理數(shù)據(jù)庫的索引總結(jié)課程內(nèi)容,重申重點、難點課后任務完成【項目案例】中圖書館借還書管理數(shù)據(jù)庫的索引。有能力的同學完成【項目實踐】中學生成績管理數(shù)據(jù)庫的索引。

項目8數(shù)據(jù)庫編程技術任務名稱編程基礎知識、存儲過程教學目的掌握常量、變量、系統(tǒng)函數(shù)和流程控制語句。掌握創(chuàng)建和調(diào)用存儲過程的方法。教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:常量、變量、系統(tǒng)函數(shù)和流程控制語句、存儲過程的創(chuàng)建、游標的使用步驟。難點:結(jié)合程序控制流程創(chuàng)建存儲過程教學內(nèi)容設計課程引入:通過“為了提高工作效率,可以將多條命令組合在一起,形成一個程序一次性執(zhí)行”引入本課。授課內(nèi)容:常量和變量常量變量二、系統(tǒng)內(nèi)置函數(shù)1.數(shù)學函數(shù)2.字符串函數(shù)3.日期和時間函數(shù)4.控制流程函數(shù)三、流程控制語句1.順序語句2.分支語句3.循環(huán)語句四、存儲過程1.創(chuàng)建存儲過程2.調(diào)用存儲過程3.刪除存儲過程4.使用游標總結(jié)課程內(nèi)容,重申重點、難點課后任務完成“例8-1”“例8-2”“例8-3”……和“例8-24”任務名稱存儲函數(shù)、觸發(fā)器和事件教學目的掌握創(chuàng)建和調(diào)用存儲函數(shù)的方法。掌握創(chuàng)建觸發(fā)器和事件的方法。教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:存儲函數(shù)的創(chuàng)建難點:存儲函數(shù)與存儲過程的區(qū)別教學內(nèi)容設計課程引入:通過提出問題“MySQL的存儲函數(shù)與存儲過程的作用和格式有許多類似之處,都是由聲明式SQL語句和過程式SQL語句組成的”引入本課。授課內(nèi)容:存儲函數(shù)1.創(chuàng)建存儲函數(shù)2.調(diào)用存儲函數(shù)3.刪除存儲函數(shù)觸發(fā)器1.創(chuàng)建觸發(fā)器2.使用觸發(fā)器:INSERT觸發(fā)器、UPDATE觸發(fā)器、DELETE觸發(fā)器3.查看觸發(fā)器4.刪除觸發(fā)器事件1.創(chuàng)建事件2.修改事件3.刪除事件【項目案例】圖書館借還書管理數(shù)據(jù)庫的編程總結(jié)課程內(nèi)容,重申重點、難點課后任務完成【項目案例】中圖書館借還書管理數(shù)據(jù)庫的編程。有能力的同學完成【項目實踐】中學生成績管理數(shù)據(jù)庫的編程。

項目9事務任務名稱事務教學目的了解事務的概念和事務的基本特性。掌握事務控制語句的使用。了解事務并發(fā)會引起的問題。了解事務隔離級別與鎖的關系。教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:事務的概念和基本特性,事務的開始與結(jié)束。難點:在存儲過程中實現(xiàn)對數(shù)據(jù)庫操作的事務控制。教學內(nèi)容設計課程引入:通過“事務是一組數(shù)據(jù)庫操作命令語句的集合,它能夠保證其中的所有數(shù)據(jù)庫操作命令語句要么全部執(zhí)行,要么全部不執(zhí)行,目的是保證數(shù)據(jù)庫的數(shù)據(jù)完整性”引入本課。授課內(nèi)容:一、認識事務1.事務的概念2.事務的ACID特性二、單個事務控制1.開始事務2.完成數(shù)據(jù)庫操作命令語句3.結(jié)束事務三、事務并發(fā)控制1.事務并發(fā)會引起的問題:丟失更新、臟讀、不可重復讀、幻讀2.事務隔離級別:未提交讀、提交讀、可重復讀、序列化3.事務隔離級別與鎖的關系四、【項目案例】圖書館借還書管理數(shù)據(jù)庫的事務控制1.新增讀者事務控制2.借閱圖書事務控制總結(jié)課程內(nèi)容,重申重點、難點課后任務完成【項目案例】中圖書館借還書管理數(shù)據(jù)庫的事務控制。有能力的同學完成【項目實踐】中學生成績管理數(shù)據(jù)庫的事務控制。

項目10數(shù)據(jù)安全任務名稱數(shù)據(jù)安全教學目的掌握用戶管理和權(quán)限管理的方法。掌握數(shù)據(jù)備份與數(shù)據(jù)恢復的方法。了解日志文件。教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:添加用戶和授予權(quán)限的語句備份數(shù)據(jù)和恢復數(shù)據(jù)的命令難點:MySQL的權(quán)限表教學內(nèi)容設計課程引入:通過“用戶要訪問MySQL數(shù)據(jù)庫,必須先擁有登錄MySQL的用戶名和密碼。為了確保安全訪問數(shù)據(jù)庫,通常需要為不同的用戶授予適當?shù)臋?quán)限”引入本課。授課內(nèi)容:一、認識MySQL的權(quán)限系統(tǒng)1.權(quán)限系統(tǒng)的認證過程2.權(quán)限表二、用戶管理1.添加用戶2.刪除用戶3.修改用戶名4.修改用戶密碼三、權(quán)限管理1.授予權(quán)限2.查看權(quán)限3.轉(zhuǎn)移權(quán)限4.收回權(quán)限四、數(shù)據(jù)備份與數(shù)據(jù)恢復1.備份數(shù)據(jù)表2.備份數(shù)據(jù)庫3.備份全部數(shù)據(jù)庫4.數(shù)據(jù)恢復五、認識日志文件1.二進制日志文件2.錯誤日志文件3.通用查詢?nèi)罩疚募?.慢查詢?nèi)罩疚募?、【項目案例】圖書館借還書管理數(shù)據(jù)庫的數(shù)據(jù)安全1.用戶管理2.權(quán)限管理3.數(shù)據(jù)備份和數(shù)據(jù)恢復總結(jié)課程內(nèi)容,重申重點、難點課后任務完成【項目案例】中圖書館借還書管理數(shù)據(jù)庫的數(shù)據(jù)安全。有能力的同學完成【項目實踐】中學生成績管理數(shù)據(jù)庫的數(shù)據(jù)安全。

項目11編寫Python程序訪問MySQL數(shù)據(jù)庫任務名稱編寫Python程序訪問MySQL數(shù)據(jù)庫教學目的掌握搭建Python編程環(huán)境的方法。熟悉PyMySQL中的主要對象及其成員方法。掌握訪問MySQL數(shù)據(jù)庫的步驟。學會編寫實現(xiàn)插入、修改、刪除和查詢等數(shù)據(jù)操作的Python程序。了解Python的事務與異常處理。教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:掌握PyMySQL訪問數(shù)據(jù)庫的步驟難點:理解PyMySQL中的主要對象及對象的成員函數(shù)的功能教學內(nèi)容設計課程引入:通過“除了登錄MySQL直接進行數(shù)據(jù)操作之外,也可以編寫訪問MySQL數(shù)據(jù)庫的程序來完成數(shù)據(jù)操作”引入本課授課內(nèi)容:搭建Python編程環(huán)境安裝Python解釋器安裝PyCharm集成開發(fā)環(huán)境在PyCharm中創(chuàng)建Python項目在Python項目中安裝PyMySQL數(shù)據(jù)庫訪問驅(qū)動模塊二、使用Python訪問MySQL數(shù)據(jù)庫1.PyMySQL中對象Connection對象、Cursor對象、Row對象2.訪問MySQL數(shù)據(jù)庫的步驟(1)建立數(shù)據(jù)庫連接(2)完成數(shù)據(jù)操作(3)斷開數(shù)據(jù)庫連接3.操作數(shù)據(jù)庫中的數(shù)據(jù)查詢數(shù)據(jù)(1)插入數(shù)據(jù)(2)更新數(shù)據(jù)(3)刪除數(shù)據(jù)4.事務與異常處理三、【項目案例】編寫Python程序訪問圖書館借還書管理數(shù)據(jù)庫1.將訪問數(shù)據(jù)庫的代碼封裝為公共類DBConn2.使用公共類DBConn訪問圖書館借還書管理數(shù)據(jù)庫總結(jié)課程內(nèi)容,重申重點、難點課后任務搭建Python編程環(huán)境,完成【項目案例】中公共類DBConn的創(chuàng)建,并使用DBConn類訪問圖書館借還書管理數(shù)據(jù)庫實現(xiàn)查詢、插入、更新和刪除等數(shù)據(jù)操作。有能力的同學完成【項目實踐】編寫Python程序訪問學生成績管理數(shù)據(jù)庫。項目12基于Python的桌面應用程序開發(fā)任務名稱桌面應用程序的開發(fā)步驟及PyQt窗體中的控件教學目的了解桌面應用程序的開發(fā)步驟。了解PyQt窗體中的控件。教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:PyQt窗體中的控件以及控件的常用屬性和事件難點:桌面應用程序開發(fā)的步驟教學內(nèi)容設計課程引入:通過“用戶與桌面應用程序之間的功能交互是通過窗體來實現(xiàn),而控件是構(gòu)成窗體的基本單位”引入本課。授課內(nèi)容:一、桌面應用程序的開發(fā)步驟通過【例12-1】歡迎程序,理解桌面應用程序開發(fā)步驟:(1)在Python項目中安裝PyMySQL、PyQt6和QtDesigner(2)使用QtDesigner工具完成界面設計(3)使用PyUIC工具將界面設計結(jié)果轉(zhuǎn)換為Python代碼。(4)基于轉(zhuǎn)換得到的Python程序文件完成程序設計。二、PyQt窗體中的控件1.常用的控件及其功能2.控件的常用屬性及其含義3.控件的常用事件及其含義總結(jié)課程內(nèi)容,重申重點、難點課后任務熟悉QtDesigner工具和PyUIC命令的使用,完成“例12-1”。任務名稱圖書館借還書管理系統(tǒng)桌面應用程序開發(fā)教學目的通過實例加強對基于數(shù)據(jù)庫的Python桌面應用程序開發(fā)的理解教學方法課堂授課、班級授課教學手段多媒體教學重點難點重點:使用QtDesigner設計界面、編寫Python代碼實現(xiàn)界面功能難點:控件的事件綁定、消息響應函數(shù)的實現(xiàn)教學內(nèi)容設計課程引入:通過提出問題“如何為校園圖書館構(gòu)建高效、易用的管理系統(tǒng)”引入本課授課內(nèi)容:1.系統(tǒng)功能設計2.系統(tǒng)主窗體開發(fā)3.書目查詢窗口開發(fā)4.書目上架窗口開發(fā)5.書目維護窗口開發(fā)總結(jié)課程內(nèi)容,重申重點、難點課后任務完成【項目案例】圖書館借還書管理系統(tǒng)桌面應用程序開發(fā)。有能力的同學完成【項目實踐】學生成績管理系統(tǒng)桌面應用程序開發(fā)。第1章一、單項選擇題1~5 BBCAC6~10 ABDBA二、填空題1.物理獨立性2.1,多3.元組(記錄),屬性(字段)4.205.root第2章一、單項選擇題1~5 BCACA二、填空題1.邏輯結(jié)構(gòu)設計2.需求分析3.命名沖突,結(jié)構(gòu)沖突4.可由基本屬性推導或計算得到的屬性5.3NF第3章一、單項選擇題1~5 DACDB6~10 BABDB二、填空題1.DECIMAL2.二進制字符串3.CREATETABLEpubinfo(book_idCHAR(6)PRIMARYKEY,titleVARCHAR(50),abstractTEXT);4.CREATETABLEinventoryLIKEstock;5.ALTERTABLEinventoryRENAMEinventory2;6.DROPTABLEinventory2;7.外鍵8.SETNULL9.檢查10.主鍵第4章一、單項選擇題1~5 DCBCB6~10 BCAAB二、填空題1.REPLACE2.數(shù)據(jù)表結(jié)構(gòu)的字段3.WHERE4.外鍵5.CASCADE第5章一、單項選擇題1~5 CCCDA6~10 ACDDC二、填空題1.表名.字段名稱2.WHERE3.reader4.別名5.GROUPBY第6章一、單項選擇題1~5 DCBAD二、填空題1.定義數(shù)據(jù)2.一對一3.基本表/表4.ALTERVIEW5.WHERE第7章一、單項選擇題1~5 DAACD二、填空題1.排序2.13.唯一4.CHARVARCHAR5.自動刪除第8章一、單項選擇題1~5 DBAAD二、填空題1.ABXYZ2.RETURN3.FETCH4.BEFOREAFTER5.INOUU6.事件第9章一、單項選擇題1~5 BBADC6~10 CACCA二、填空題1.存儲引擎2.原子性3.STARTTRANSACTION或BEGINWORK4.臟讀5.可重復讀第10章一、單項選擇題1~5 BBADB6~10 ABCAA二、填空題1.請求認證階段2.GRANT3.CREATE,INSERT4.SHOWBINARYLOGS5.RESETMASTER第11章一、單項選擇題1~5 BCCCA二、填空題1.建立數(shù)據(jù)庫連接、完成數(shù)據(jù)操作、斷開數(shù)據(jù)庫連接。2.可能產(chǎn)生異常的操作、處理異常的操作、無論是否發(fā)生異常都會執(zhí)行的清理操作3.占位符,在執(zhí)行SQL語句時動態(tài)傳遞參數(shù)值第12章一、單項選擇題1~5 CBCDD二、填空題1.界面設計、程序邏輯2.setupUi,retranslateUi3.將searchBtn控件的clicked事件與searchBooksByTitle成員方法綁定Python基礎知識作為一門通用編程語言,Python以其簡潔優(yōu)雅的語法、強大的功能庫以及在數(shù)據(jù)科學、人工智能、網(wǎng)絡開發(fā)等領域的廣泛應用,成為開啟編程思維大門的最佳鑰匙。本內(nèi)容旨在提供一個極簡的Python入門指引,通過“理論引導,代碼實證”的學習模式,幫助各位讀者快速構(gòu)建起Python程序設計的核心能力。1.認識Python1.1Python語言概述Python是一種解釋型、高級、通用的動態(tài)編程語言。它由荷蘭計算機科學家吉多·范羅蘇姆于20世紀80年代末設計,并于1991年首次發(fā)布。Python的設計哲學強調(diào)代碼的可讀性與簡潔性,其語法結(jié)構(gòu)允許程序員用比C++或Java更少的代碼行數(shù)表達概念。作為一種“膠水語言”,Python能夠輕松地與其他語言編寫的模塊進行集成。在學術界與工業(yè)界,Python已成為事實上的標準語言之一。其強大的第三方庫生態(tài)系統(tǒng)(如用于數(shù)值計算的NumPy,用于數(shù)據(jù)分析的Pandas,用于機器學習的Scikit-learn和PyTorch)使得它在處理復雜科學計算和數(shù)據(jù)驅(qū)動任務時表現(xiàn)卓越。對于初學者而言,Python接近自然語言的語法極大降低了學習曲線,使我們能夠?qū)W⒂诮鉀Q問題本身的邏輯,而非語言的形式細節(jié)。1.2Python開發(fā)環(huán)境要運行Python程序,必須構(gòu)建相應的計算環(huán)境。這主要包含兩個核心組件:解釋器和集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE)。1.2.1安裝Python解釋器Python是一門解釋型語言,這意味著計算機不能直接理解我們編寫的Python代碼。需要一個中間程序——解釋器,將源代碼逐行翻譯成機器能夠執(zhí)行的指令。安裝Python解釋器是開展編程工作的第一步。讀者應前往Python官方網(wǎng)站(),根據(jù)自身的操作系統(tǒng)(Windows或macOS)下載并安裝最新的穩(wěn)定版本(建議Python3.9.13)。在安裝過程中,務必勾選“AddPythontoPATH”選項,以確保在操作系統(tǒng)的終端或命令行中能夠全局訪問Python指令。1.2.2安裝PyCharm集成開發(fā)環(huán)境雖然僅憑解釋器和簡單的文本編輯器(如記事本)即可編寫代碼,但在實際工程與學術研究中,使用IDE能顯著提升效率。IDE集成了代碼編輯、語法高亮、智能提示、調(diào)試(Debugging)和版本控制等功能。本教程推薦使用JetBrains公司開發(fā)的PyCharm,讀者可前往JetBrains公司官方網(wǎng)站下載最新的PyCharm免費版本,按照安裝程序提示自行安裝PyCharm。需要注意的是,首次啟動時需將其Python解釋器設置為上小結(jié)安裝的Python3.9解釋器。1.3第一個Python程序遵循計算機科學教育的傳統(tǒng),編寫的第一個程序是致敬這個美好世界。在PyCharm中創(chuàng)建一個新的Python文件(通常以.py為后綴),輸入以下代碼并運行:【例1-1】編寫一個輸出“HelloWorld!”的Python程序。#1-1.py#這是一個注釋,用于解釋代碼,解釋器會忽略它

#print()是Python的一個內(nèi)置函數(shù),用于向控制臺輸出信息

print("Hello,World!")該程序調(diào)用了Python的內(nèi)置函數(shù)print(),并將字符串字面量"Hello,World!"作為參數(shù)傳遞給它。將以上代碼保存為1-1.py文件,通過控制臺執(zhí)行python1-1.py命令,運行該程序后將控制臺窗口顯示:Hello,World!。2.Python語言基礎掌握編程語言類似于學習一門新的自然語言,需要首先理解其數(shù)據(jù)類型和控制結(jié)構(gòu)。2.1常用數(shù)據(jù)類型與變量在程序設計中,數(shù)據(jù)是信息的載體,而數(shù)據(jù)類型定義了數(shù)據(jù)的性質(zhì)、取值范圍、以及可進行的操作。Python是動態(tài)類型語言,這意味著在聲明變量時無需顯式指定其類型,解釋器會根據(jù)賦值自動推斷。以下是Python中最基礎的四種數(shù)據(jù)類型:整型:表示不帶小數(shù)部分的整數(shù),如10,-5,0。浮點型:表示帶有小數(shù)部分的實數(shù),通常用于科學計算,如3.14,-0.001,2.5e2(科學計數(shù)法)。布爾型:表示邏輯上的真假值,僅有兩個取值:True和False。常用于條件判斷。字符串型:表示文本序列,由單引號'或雙引號"包裹,如"PythonProgramming",'A'?!纠?-1】編寫程序演示變量賦值與類型查看。#2-1.py#變量賦值:將數(shù)據(jù)綁定到一個標識符(變量名)上

age=19#定義整型變量

gpa=3.85#定義浮點型變量

is_freshman=True#定義布爾型變量

university="清華大學"#定義字符串變量

#使用type()函數(shù)查看變量的數(shù)據(jù)類型

print("age的數(shù)據(jù)類型為:",type(age))

print("gpa的數(shù)據(jù)類型為:",type(gpa))

print("is_freshman的數(shù)據(jù)類型為:",type(is_freshman))

#字符串(f-string)的格式化輸出

print(f"學生信息:年齡:{age},GPA成績:{gpa},學校:{university}")2.2選擇結(jié)構(gòu)程序的默認執(zhí)行順序是自上而下的順序結(jié)構(gòu)。選擇結(jié)構(gòu)(或稱分支結(jié)構(gòu))允許程序根據(jù)特定條件(布爾表達式的結(jié)果)的真假,選擇性地執(zhí)行不同的代碼塊。Python使用if和else關鍵字來實現(xiàn)這一邏輯,并使用縮進來界定代碼塊的范圍。通常,Python代碼塊縮進量通常是4個空格?!纠?-2】編寫程序演示利用選擇結(jié)構(gòu)判斷學分績點等級。#2-2.py

score=3.5#根據(jù)GPA分數(shù)判斷成績的等級成績

#條件表達式會計算出True或False

ifscore>=4.0:#只有當if條件為True時執(zhí)行此塊

grade="A"

elseifscore>=3.7:#當if為False且此elseif為True時執(zhí)行

grade="B"

elseifscore>=3.3:

grade="C"

else:#當上述所有條件都為False時執(zhí)行

grade="D"

print(f"GPA{score}分對應的等級成績?yōu)?{grade}")2.3循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)旨在處理重復性的任務。Python提供了兩種主要的循環(huán)機制:while循環(huán)和for循環(huán)。while循環(huán):只要指定的條件為真,就持續(xù)重復執(zhí)行代碼塊。適用于迭代次數(shù)未知,但終止條件明確的場景。for循環(huán):用于遍歷序列(如列表、字符串)中的每個元素,或者按照指定的次數(shù)進行迭代。在數(shù)值迭代中,常與range()函數(shù)配合使用?!纠?-3】編寫程序演示使用循環(huán)結(jié)構(gòu)進行數(shù)值累加。#2-3.py#1.使用while循環(huán),計算1到100的和

count=1

total_while=0

whilecount<=100:

total_while+=count#等同于total_while=total_while+count

count+=1

print(f"使用while循環(huán)計算的求和結(jié)果為:{total_while}")

#2.使用for循環(huán)和range(),計算1到100的和

total_for=0

foriinrange(1,101):#range(1,101)生成一個從1開始到100結(jié)束的整數(shù)序列(左閉右開區(qū)間)

total_for+=i

print(f"使用for循環(huán)計算的求和結(jié)果為:{total_for}")2.4異常處理在程序運行過程中,不可避免地會出現(xiàn)錯誤,例如除以零、嘗試打開不存在的文件或處理錯誤的數(shù)據(jù)類型。這些運行時錯誤稱為“異?!薄H绻患犹幚?,異常會導致程序立刻崩潰。為了增強程序的健壯性,我們需要捕獲并處理這些異常。Python提供了try...except...finally結(jié)構(gòu)來實現(xiàn)這一機制。將可能引發(fā)異常的代碼放在try塊中,并在except塊中定義處理錯誤的方式。【2-4例】編寫程序?qū)崿F(xiàn)安全除法,演示處理可能出現(xiàn)的除零錯誤和類型錯誤。#2-4.py

dividend="10"#字符串來引發(fā)類型錯誤

divisor=0#0值分母引發(fā)除數(shù)為零錯誤

try:

#將字符串轉(zhuǎn)換為整型,可能引發(fā)ValueError

num=int(dividend)

den=int(divisor)

#可能引發(fā)ZeroDivisionError

result=num/den

print(f"除法運算結(jié)果:{result}")

exceptZeroDivisionError:

#處理除數(shù)為零的情況

print("錯誤:除數(shù)為零錯誤.")

exceptValueError:

#處理輸入不是有效數(shù)字的情況

print("錯誤:無效的輸入.請確輸入的被除數(shù)和除數(shù)均為數(shù)值類型.")

exceptExceptionase:

#處理其他未預料到的錯誤

print(f"其他錯誤導致的異常:{e}")

finally:

#無論是否發(fā)生異常,finally塊中的代碼總會執(zhí)行

#常用于資源釋放,如關閉文件或數(shù)據(jù)庫連接

print("除法運算結(jié)束.")2.5模塊導入模塊是具有特定功能代碼的集合,也是實現(xiàn)功能代碼重用的重要途徑。在編寫Python程序時,程序員經(jīng)常要導入(import)內(nèi)置或第三方模塊,借助導入模塊所提供的功能快速實現(xiàn)程序設計。【2-5例】編寫程序,演示通過2種方式導入模塊,助力實現(xiàn)程序功能。#2-5.pyimportmath#方式1:導入整個模塊fromrandomimportrandint#方式2:從模塊中導入指定函數(shù)area=150.0radius=math.sqrt(area/math.pi)#使用math.pi獲取圓周率常量,使用math.sqrt()函數(shù)計算平方根print(f"已知圓面積為:{area}")print(f"計算得出的半徑為:{radius:.2f}")#使用格式化字符串保留小數(shù)點后兩位輸出print("正在模擬擲一枚六面骰子...")dice_roll=randint(1,6)#生成1到6之間的隨機整數(shù),模擬骰子點數(shù)print(f"骰子點數(shù)結(jié)果:{dice_roll}")3.高級數(shù)據(jù)類型在處理現(xiàn)實世界的復雜問題時,僅憑基本的數(shù)值和布爾類型往往捉襟見肘。我們需要一種機制來組織和存儲一組相關的數(shù)據(jù)。Python提供了一系列內(nèi)置的高級數(shù)據(jù)類型,通常被稱為“容器”(Containers)或“數(shù)據(jù)結(jié)構(gòu)”。它們包括列表、元組、字典和集合,以及功能強大的字符串類型。理解這些數(shù)據(jù)結(jié)構(gòu)對于高效編程至關重要,因為算法通常依賴于特定的數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)最佳性能。3.1列表(List)列表是Python中最常用、最靈活的線性數(shù)據(jù)結(jié)構(gòu)。它是一個有序的元素集合,使用方括號[]表示。列表是“可變的”(Mutable),這意味著我們可以在創(chuàng)建后修改其內(nèi)容(添加、刪除或更改元素)。列表中的元素可以是不同的數(shù)據(jù)類型,支持通過索引(Index)訪問元素,并且索引從0開始?!纠?-1】編寫學生名單管理程序,演示列表的定義和常見操作。#3-1.py#定義一個包含學生姓名的列表

students=["Alice","Bob","Charlie","David"]

#1.訪問元素(Indexing)

print(f"第1個學生為:{students[0]}")

#負數(shù)索引表示從末尾開始計數(shù),-1為最后一個元素

print(f"最后1位學生為:{students[-1]}")

#2.切片(Slicing)-獲取子列表

subset=students[1:3]#獲取索引1到2的元素(左閉右開:包含1,不包含3)

print(f"學生列表索引1-2之間的學生姓名為:{subset}")#輸出['Bob','Charlie']

#3.修改列表

students[1]="Bobby"#修改索引為1的元素

print(f"修改后的學生姓名列表為:{students}")

#4.常用方法

students.append("Eve")#在列表末尾添加元素

students.remove("Charlie")#刪除指定值的第一個匹配項

pop_student=students.pop(0)#刪除并返回指定索引的元素(默認最后一個)

print(f"最后學生列表為:{students}")

print(f"被刪除的學生為:{pop_student}")

print(f"最后學生列表長度:{len(students)}")#使用len()獲取長度3.2元組(Tuple)元組與列表類似,也是有序的元素集合,但使用圓括號()表示。元組的關鍵特性是它是“不可變的”。一旦創(chuàng)建,就不能修改其內(nèi)容(不能添加、刪除或更改元素)。這種不可變性使得元組在數(shù)據(jù)需要被保護不被意外修改時非常有用,并且在內(nèi)存使用上通常比列表更高效。元組常用于表示固定長度的數(shù)據(jù)記錄,例如(經(jīng)度,緯度)坐標對。【例3-2】編寫地理坐標表示程序,演示元組的定義和常見操作。#3-2.py#定義一個表示特定地點經(jīng)緯度的元組

location_coords=(34.2655,108.9531)

#訪問元素,方式與列表相同

latitude=location_coords[0]

longitude=location_coords[1]

print(f"緯度:{latitude},經(jīng)度:{longitude}")

#嘗試修改元組元素會引發(fā)TypeError

#location_coords[0]=35.0#取消注釋此行將導致運行錯誤

lat,lon=location_coords#元組解構(gòu)賦值:一種快速賦值的技巧

print(f"元組解構(gòu)賦值獲得的坐標–緯度:{lat},經(jīng)度:{lon}")

single_element_tuple=(100,)#單個元素的元組需要在元素后加逗號,否則會被識別為普通括號

print(type(single_element_tuple))3.3字典(Dictionary)字典是一種用于存儲“鍵-值對”(Key-ValuePair)的映射型數(shù)據(jù)結(jié)構(gòu),使用花括號{}表示。它類似于現(xiàn)實生活中的字典,通過查找“鍵”(如單詞)來獲取對應的“值”(如釋義)。字典中的鍵必須是唯一的且不可變的,而值可以是任意數(shù)據(jù)類型?!纠?-3】編寫學生信息檔案管理程序,演示字典的定義和常見操作。#3-3.py#定義一個字典來存儲特定學生的信息

student={

"id":"2023001",

"name":"Alice",

"major":"ComputerScience",

"gpa":3.9

}

#1.通過鍵訪問值

print(f"學生姓名:{student['name']}")

#使用get()方法訪問更安全,如果鍵不存在返回None而不是報錯

print(f"電子郵件:{student.get('email')}")

#2.添加或修改鍵值對

student["email"]="alice@"#添加新鍵值對

student["gpa"]=3.95#修改已有鍵的值

#3.刪除鍵值對

delstudent["major"]

#4.遍歷字典

print("當前學生信息如下:")

forkey,valueinstudent.items():#.items()方法返回字典的全鍵值對列表視圖

print(f"{key}:{value}")

#檢查鍵是否存在

if"id"instudent.keys():#.keys()方法返回字典的全鍵列表視圖

print("學生信息字典包含名為’id’的鍵.")3.4集合(Set)集合是一個無序的、不包含重復元素的數(shù)據(jù)結(jié)構(gòu),同樣使用花括號{}表示(但與字典不同,它只有值沒有鍵)。集合主要用于數(shù)學上的集合操作,如并集、交集、差集,以及高效地去除序列中的重復項?!纠?-4】編寫學生選課分析程序,演示集合的定義和常見操作。#3-4.py#兩個集合,分別表示選修了數(shù)學課和物理課的學生ID

math_students={"S01","S02","S03","S04","S01"}

physics_students={"S03","S04","S05","S06"}

print(f"選修了數(shù)學的學生:{math_students}")#注意,重復的"S01"會被自動去重

#1.交集(Intersection):

both_courses=math_students&physics_students#或math_ersection(physics_students)

print(f"同時選修了兩門課的學生:{both_courses}")

#2.并集(Union):

all_students=math_students|physics_students#或math_students.union(physics_students)

print(f"至少選修了一門課的學生:{all_students}")

#3.差集(Difference):

only_math=math_students-physics_students

print(f"選修了數(shù)學但沒選物理的學生:{only_math}")

#4.添加和刪除

math_students.add("S07")

math_students.discard("S01")#如果元素不存在,不會報錯3.5字符串(String)的高級特性在2.1節(jié)中我們已初步接觸了字符串。實質(zhì)上,字符串是由字符組成的不可變序列。這意味著字符串支持許多與列表和元組類似的操作,如索引和切片。此外,Python字符串對象提供了豐富的方法用于文本處理。【例3-5】編寫程序演示字符串的常見操作。#3-5.pytext="PythonprogrammingispowerfulandFUN."

#1.基本字符串操作

print(f"字符串長度:{len(text)}")#計算字符串長度

cleaned_text=text.strip()#去除首尾空白字符

print(f"刪除首尾空白字符后的字符串為:'{cleaned_text}'")

#大小寫轉(zhuǎn)換

print(f"轉(zhuǎn)小寫字母樣式:{cleaned_text.lower()}")

print(f"轉(zhuǎn)單詞首字母大寫樣式:{cleaned_text.title()}")

#2.字符串分割與合并

#將句子按空格分割成單詞列表

words=cleaned_text.split("")

print(f"分割成的單詞列表:{words}")

#將單詞列表重新組合成句子,用連字符連接

joined_text="-".join(words)

print(f"用連字符進行連接后的文本:{joined_text}")

#3.查找與替換

#查找子字符串的位置,未找到返回-1

position=cleaned_text.find("powerful")

print(f"'powerful'子串首次出現(xiàn)的位置為:{position}")

#替換子字符串(注意:因為字符串不可變,這會返回一個新的字符串)

new_text=cleaned_text.replace("FUN","essential")

print(f"替換后的新字符串為:{new_text}")

#4.字符串的切片

print(f"字符串的前6個字符為:'{cleaned_text[:6]}'")

print(f"反轉(zhuǎn)后的字符串為:'{cleaned_text[::-1]}'")4.函數(shù)在解決復雜問題時,將龐大的任務分解為若干個獨立、可復用的小型子任務是基本的工程思維。在編程中,這種子任務的具體實現(xiàn)形式就是函數(shù)。4.1函數(shù)聲明與定義從理論層面看,函數(shù)是一段組織好的、旨在實現(xiàn)單一特定功能的代碼塊。它接收零個或多個輸入(又稱參數(shù)),經(jīng)過一系列計算處理,最終產(chǎn)生一個輸出(又稱返回值)。使用函數(shù)的主要目的是提高代碼的復用性和可讀性。定義好一個函數(shù),就可在程序的任何地方多次調(diào)用它,而無需重復編寫相同的代碼邏輯。在Python中,我們使用def關鍵字來定義函數(shù)。【例4-1】編寫程序演示函數(shù)定義的語法。#4-1.pydeffunction_name(parameter1,parameter2,...):

"""

函數(shù)的文檔字符串(Docstring):用于描述函數(shù)的功能、參數(shù)和返回值。

"""

#函數(shù)體:執(zhí)行具體任務的代碼塊

#...

returnresult#返回值(可選)4.2函數(shù)調(diào)用與返回值函數(shù)的定義僅僅描述了函數(shù)“應該做什么”,而要讓函數(shù)真正執(zhí)行,必須進行調(diào)用。調(diào)用是通過書寫函數(shù)名并在其后加上圓括號(其中包含必要的參數(shù)值)來實現(xiàn)的。return語句用于結(jié)束函數(shù)的執(zhí)行,并將一個值返回給調(diào)用者。如果函數(shù)體中沒有return語句,或者return后沒有接任何值,Python默認返回特殊值None?!纠?-2】編寫一個計算圓的面積的函數(shù),演示函數(shù)定義與調(diào)用。#4-2.pyimportmath#導入數(shù)學模塊以使用圓周率pi

#1.函數(shù)定義

defcalculate_circle_area(radius):

"""

計算給定半徑的圓的面積。

Args:

radius(float):圓的半徑,必須為非負數(shù)。

Returns:

float:計算得到的圓面積;如果輸入無效返回None。

"""

#進行輸入驗證

ifnotisinstance(radius,(int,float))orradius<0:

print("錯誤:半徑輸入出錯,半徑必須為一個非負的數(shù)值.")

returnNone

area=math.pi*(radius**2)

returnarea#返回計算結(jié)果

#2.函數(shù)調(diào)用

r1=5.0

#調(diào)用函數(shù),并將返回值賦給變量area1

area1=calculate_circle_area(r1)

print(f"半徑為{r1}的圓的面積為:{area1:.2f}")

#3.調(diào)用并直接打印返回值

print(f"半徑為10.0的圓的面積為:{calculate_circle_area(10.0):.2f}")

#4.演示無效輸入

invalid_result=calculate_circle_area(-3)

print(f"以無效半徑作為實際參數(shù)調(diào)用函數(shù)后,函數(shù)的返回值為:{invalid_result}")4.3參數(shù)傳遞機制參數(shù)是調(diào)用者向函數(shù)內(nèi)部傳遞信息的橋梁。Python提供了高度靈活的參數(shù)傳遞機制,理解這些機制對于編寫通用性強的函數(shù)至關重要。形式參數(shù):在函數(shù)定義時使用的變量名(如上例中的radius)。實際參數(shù):在函數(shù)調(diào)用時傳遞給函數(shù)的具體值(如上例中的5.0或10)。4.3.1位置參數(shù)這是最常見的參數(shù)傳遞方式。在調(diào)用函數(shù)時,實參按照函數(shù)定義中形參的順序依次賦值。4.3.2關鍵字參數(shù)為了提高代碼在調(diào)用時的可讀性,并允許不按順序傳遞參數(shù),可以使用關鍵字參數(shù)。在調(diào)用時明確指定“形參名=實參值”。4.3.3默認值參數(shù)在定義函數(shù)時,可以為某些參數(shù)指定默認值。在調(diào)用時,如果未提供該參數(shù)的實參,則使用默認值。這極大地增強了函數(shù)的靈活性,使得某些參數(shù)成為可選參數(shù)?!纠?-3】編寫一個計算復利的函數(shù),演示不同的參數(shù)傳遞機制。#4-3.py#形式參數(shù)說明

#principal:本金(位置參數(shù),必須提供)

#rate:年利率(位置參數(shù),必須提供)

#years:投資年限(默認值參數(shù),默認為1年)

#times_per_year:每年復利次數(shù)(默認值參數(shù),默認為1次)

defcalculate_compound_interest(principal,rate,years=1,times_per_year=1):

"""計算復利終值。"""

final_amount=principal*((1+rate/times_per_year)**(times_per_year*years))

returnfinal_amount

#1.使用位置參數(shù)調(diào)用(依賴順序)

#計算本金1000,年利率5%,默認1年1次復利

amount1=calculate_compound_interest(1000,0.05)

print(f"復利值1:${amount1:.2f}")

#2.混合使用位置參數(shù)和默認參數(shù)

#計算本金1000,年利率5%,投資10年,默認每年1次復利

amount2=calculate_compound_interest(1000,0.05,10)

print(f"復利值2:${amount2:.2f}")

#3.使用關鍵字參數(shù)調(diào)用

#計算本金1000,年利率5%,投資5年,每年復利12次(月復利)

#注意:如果混合使用,位置參數(shù)必須在關鍵字參數(shù)之前定義和傳值

amount3=calculate_compound_interest(1000,0.05,times_per_year=12,years=5)

print(f"復利值3:${amount3:.2f}")4.4變量作用域(Scope)變量在程序中并不是任何地方都可見,理解變量作用域?qū)τ诒苊庾兞棵麤_突和理解數(shù)據(jù)流動至關重要。根據(jù)定義位置和作用域范圍,Python語言的變量分為兩類:全局變量:在函數(shù)外部定義的變量,在整個程序中均可見。局部變量:在函數(shù)內(nèi)部定義的變量(包括函數(shù)參數(shù)),僅在該函數(shù)內(nèi)部可見。函數(shù)執(zhí)行結(jié)束后,局部變量的生命周期即告終止。4.5內(nèi)置函數(shù)(Built-inFunctions)Python解釋器自帶了大量高效、經(jīng)過優(yōu)化的內(nèi)置函數(shù),它們是Python標準庫的重要組成部分。熟練使用這些函數(shù)可以避免“重復造輪子”。我們已經(jīng)接觸過print(),type(),len(),int(),range()等?!纠?-4】編寫Python程序,演示常用數(shù)據(jù)處理內(nèi)置函數(shù)。#4-4.py#數(shù)值列表

numbers=[15,2,38,-5,10,2]

print(f"原列表:{numbers}")

#1.統(tǒng)計類

print(f"numbers列表的總和為:{sum(numbers)}")#求和函數(shù)

print(f"numbers列表的最大值為:{max(numbers)}")#最大值函數(shù)

print(f"numbers列表的最小值為:{min(numbers)}")#最小值函數(shù)

print(f"-5的絕對值為:{abs(-5)}")#絕對值函數(shù)

#2.排序類

#sorted()返回一個新的已排序列表,不改變原列表

sorted_numbers=sorted(numbers,reverse=True)#降序排列

print(f"排序后的列表:{sorted_numbers}")

#3.組合類

names=["Alice","Bob","Charlie"]

scores=[95,88,92]

zipped_data=list(zip(names,scores))#將多個可迭代對象打包組合成元組構(gòu)成的列表

print(f"打包后的元組列表:{zipped_data}")#輸出:[('Alice',95),('Bob',88),('Charlie',92)]5.類與對象隨著軟件規(guī)模的擴大,僅憑函數(shù)來組織代碼會變得愈發(fā)困難,數(shù)據(jù)與操作數(shù)據(jù)的函數(shù)往往處于分離狀態(tài)。面向?qū)ο缶幊蹋∣OP)提供了一種更貼近現(xiàn)實世界認知的軟件設計范式。5.1面向?qū)ο缶幊谈攀雒嫦驅(qū)ο缶幊痰暮诵乃枷胧菍?shù)據(jù)和操作數(shù)據(jù)的方法封裝在一個稱為“對象”(Object)的實體中。程序則由一系列相互交互的對象組成。為了理解OOP,我們需要區(qū)分2個核心概念:類(Class):是對一類事物的抽象描述,是創(chuàng)建對象的“藍圖”或“模板”。它定義了該類事物共同具備的屬性和方法。例如,“學生”這個概念就是一個類。對象(Object)/實例(Instance):是根據(jù)類創(chuàng)建的具體存在。如果“學生”是類,那么“學號為2023001的張三同學”就是一個具體的對象。5.2類的定義在Python中,使用class關鍵字定義類。類名通常采用“駝峰命名法”,即每個單詞的首字母大寫。類的內(nèi)部包含兩個主要部分:屬性(Attributes):用于存儲對象狀態(tài)的數(shù)據(jù)變量。方法(Methods):用于定義對象行為的函數(shù)。在類中定義方法時,第一個參數(shù)通常約定為self,它代表類的實例本身。5.3類的實例化與初始化5.3.1對象的實例化創(chuàng)建類的實例的過程稱為實例化。其語法類似于調(diào)用函數(shù):對象名=類名()。5.3.2__init__()方法當一個對象被實例化時,通常需要立即初始化它的狀態(tài)(給屬性賦值)。Python提供了一個特殊的方法__init__(又稱構(gòu)造函數(shù)),在創(chuàng)建新對象時會自動調(diào)用該方法。注意:__init__前后各有兩個下劃線,在Python中這樣的命名特點表示其為一類特殊方法(MagicMethods)?!纠?-1】編寫定義一個學生類演示類的定義、實例化及初始化。#5-1.pyclassStudent:

"""

代表一個大學生的類。

"""

#類屬性:所有實例共享的數(shù)據(jù)

university_name="清華大學"

def__init__(self,student_id,name,major):

"""

初始化方法,在創(chuàng)建新Student對象時被調(diào)用。

Args:

student_id:學號

name:姓名

major:專業(yè)

"""

#實例屬性:每個對象獨有的數(shù)據(jù),使用self.屬性名進行綁定

self.student_id=student_id

=name

self.major=majo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論