理論、思維訓(xùn)練與實踐相結(jié)合是本書的特色。本書共分為8章,主要內(nèi)容是通過算法與程序設(shè)計的基本概念,結(jié)合Python程序設(shè)計語言,使學(xué)生理解計算思維的概念,了解算法與程序的關(guān)系,能夠進(jìn)行較為簡單而經(jīng)典的算法設(shè)計,評價算法的性能與效率,并能利用Python語言進(jìn)行簡單的程序開發(fā)。培養(yǎng)學(xué)生利用計算機解決與專業(yè)、科研、社會需要密切相關(guān)的實際問題的能力和基本創(chuàng)新精神,以適應(yīng)信息化社會的要求、拓寬發(fā)展空間,使其在后續(xù)專業(yè)課程的學(xué)習(xí)和未來的工作中長期受益。
本書是高等院校非計算機專業(yè)“程序設(shè)計基礎(chǔ)”及相關(guān)課程的配套教材,也可作為Python初學(xué)者的入門書籍。
1.《Python算法與程序設(shè)計基礎(chǔ)(第2版)》為Python入門教材,囊括80余道編程練習(xí)(課后編程題和附錄練習(xí)題匯編)與11個實訓(xùn)(每個實訓(xùn)包含多個練習(xí)和實驗案例)。
2.《Python算法與程序設(shè)計基礎(chǔ)(第2版)》涵蓋經(jīng)典算法解析,算法是程序設(shè)計的核心,掌握經(jīng)典算法是學(xué)好程序設(shè)計的基礎(chǔ)。
3.《Python算法與程序設(shè)計基礎(chǔ)(第2版)》注重重點與難點的解析,并擴展了部分內(nèi)容。
為了適應(yīng)信息和計算技術(shù)的發(fā)展,切實滿足社會各個領(lǐng)域?qū)τ嬎銠C應(yīng)用人才不斷增長的需求,本書設(shè)計了“算法與程序設(shè)計基礎(chǔ)”的通識課程方案,力求融入計算思維的思想,將多年來計算機學(xué)科所形成的解決問題的思維模式和方法滲透到各個學(xué)科。與傳統(tǒng)的程序設(shè)計類教材不同,本書選擇較容易上手的Python語言,著重介紹分析問題和解決問題的方法和思路,通過對不同解決方案的分析比較,讓學(xué)生掌握選取優(yōu)化方案并予以實現(xiàn)的理論方法和實際應(yīng)用能力。
本教材具有以下特點。
1.重點和難點安排合理
本書的內(nèi)容編排凝聚了作者多年的教學(xué)經(jīng)驗與體會,章節(jié)的篇幅和安排提供了教師講解內(nèi)容和時間安排上的靈活性。各章開頭的導(dǎo)讀列舉了該章的重點難點,并拋出若干關(guān)鍵問題,讓讀者帶著思考而有目的性地學(xué)習(xí)。擴展部分的內(nèi)容使有能力的讀者可以更上一層樓,把本書作為有價值的參考資源。
2.可操作性強
本書提供了大量有針對性的實例,同時對編程中要注意什么、如何閱讀出錯提示、出現(xiàn)問題如何解決等,書中都一一講解,帶領(lǐng)學(xué)生迅速掌握編程的全過程。各章均提供豐富的思考題和編程實訓(xùn),每個實訓(xùn)都圍繞某個主題設(shè)計若干題目,并包含示范性的操作和編程范例。本書的最后還專門匯編了48個Python編程練習(xí)并提供詳細(xì)代碼。
3.涵蓋算法與程序設(shè)計較為核心的內(nèi)容
本書講解了經(jīng)典的、應(yīng)用廣泛的各類算法,并結(jié)合程序設(shè)計的思想和方法,讓學(xué)生能夠通過循序漸進(jìn)的程序設(shè)計過程了解計算的魅力,掌握求解問題的方法,進(jìn)而融入到后續(xù)的學(xué)習(xí)和今后的生活及工作中。
4.講解深入
對一些重點、難點知識,學(xué)生不僅要知其然,還需要知其所以然。因此本書為教師和學(xué)生剖析其本質(zhì),讓學(xué)生能夠從根本上理解、掌握并靈活運用這些知識。
本書由吳萍負(fù)責(zé)全書的統(tǒng)稿。第1章由朱敏、陳志云、蒲鵬執(zhí)筆,第2章、第6章由周力、吳萍執(zhí)筆,第3章由朱晴婷執(zhí)筆,第4章由蒲鵬執(zhí)筆,第5章由朱晴婷、裘奮華執(zhí)筆,第7章由吳萍執(zhí)筆,第8章由刁慶霖執(zhí)筆。附錄A由各章編寫者提供,附錄B由鄭凱、陳優(yōu)廣選編。
由于時間倉促和作者水平有限,書中難免有不妥之處,懇請廣大讀者批評指正。
本書的配套課件、源代碼等可以從清華大學(xué)出版社網(wǎng)站www.tup.com.cn下載。關(guān)于本書及課件使用中的問題,請聯(lián)系fuhy@tup.tsinghua.edu.cn。
編者
2017年8月于華東師范大學(xué)
第1章程序設(shè)計與計算思維
1.1程序設(shè)計與計算機語言
1.1.1程序設(shè)計
1.1.2設(shè)計步驟
1.1.3程序設(shè)計分類
1.1.4基本規(guī)范
1.1.5計算機語言
1.2計算機語言與計算思維的關(guān)系
1.2.1思維與計算思維
1.2.2計算思維與計算科學(xué)的關(guān)系
1.2.3計算思維與程序設(shè)計語言的關(guān)系
1.3初識Python語言
1.3.1Python語言概述
1.3.2Python語言的應(yīng)用
1.3.3編輯與運行環(huán)境
1.4Python與大數(shù)據(jù)
1.5Python的幫助系統(tǒng)
1.5.1關(guān)于Python幫助系統(tǒng)
1.5.2使用Python幫助系統(tǒng)
1.6本章小結(jié)
1.7習(xí)題與思考
1.8實訓(xùn)Python的安裝和運行環(huán)境
第2章算法概述
2.1計算機程序與算法
2.1.1計算機求解問題的過程
2.1.2算法的定義及其發(fā)展歷史
2.1.3算法的基本性質(zhì)
2.1.4算法的評價
2.2算法的描述
2.2.1用自然語言或偽代碼描述算法
2.2.2用流程圖描述算法
2.2.3使用計算機軟件繪制流程圖
2.3常用算法簡介
2.3.1枚舉算法
2.3.2迭代算法
2.3.3貪心算法
2.4本章小結(jié)
2.5習(xí)題與思考
2.6實訓(xùn)算法描述和繪制流程圖
第3章數(shù)據(jù)表示和計算
3.1數(shù)據(jù)和數(shù)據(jù)類型的概念
3.1.1數(shù)據(jù)的表示
3.1.2數(shù)據(jù)類型的概念
3.1.3Python的內(nèi)置類型
3.1.4常量和變量
3.1.5Python的動態(tài)類型
3.2數(shù)值數(shù)據(jù)的表示與計算
3.2.1數(shù)值數(shù)據(jù)的常量表示
3.2.2數(shù)值數(shù)據(jù)的計算
3.2.3系統(tǒng)函數(shù)
3.3文本數(shù)據(jù)的表示和操作
3.3.1文本的表示
3.3.2字符串類型數(shù)據(jù)的基本計算
3.3.3str對象的方法
3.4批量數(shù)據(jù)表示與操作
3.4.1批量數(shù)據(jù)的構(gòu)造
3.4.2元組和列表
3.4.3集合和字典
3.5本章小結(jié)
3.6習(xí)題與思考
3.7實訓(xùn)數(shù)據(jù)表示和計算
第4章基本控制結(jié)構(gòu)的程序設(shè)計
4.1用Python實現(xiàn)順序結(jié)構(gòu)程序
4.2用Python實現(xiàn)分支結(jié)構(gòu)程序
4.2.1Python簡單分支
4.2.2Python雙分支
4.2.3Python分支嵌套
4.2.4Python多分支結(jié)構(gòu)
4.3用Python實現(xiàn)循環(huán)結(jié)構(gòu)程序
4.3.1Python的for循環(huán)語句
4.3.2Python的range()函數(shù)
4.3.3Python的while循環(huán)結(jié)構(gòu)
4.3.4Python的break、continue和pass語句
4.3.5循環(huán)結(jié)構(gòu)應(yīng)用
4.4字符串?dāng)?shù)據(jù)操作
4.4.1字符串和list數(shù)據(jù)的相互轉(zhuǎn)換
4.4.2字符查找
4.4.3字符串遍歷
4.4.4字符串截取
4.5本章小結(jié)
4.6習(xí)題與思考
4.7實訓(xùn)基本控制結(jié)構(gòu)
第5章數(shù)據(jù)的輸入和輸出
5.1人機交互的意義及方法
5.1.1標(biāo)準(zhǔn)輸入輸出
5.1.2文件輸入輸出
5.2標(biāo)準(zhǔn)輸入輸出程序
5.2.1標(biāo)準(zhǔn)輸入函數(shù)
5.2.2標(biāo)準(zhǔn)輸出函數(shù)
5.2.3輸入輸出重定向
5.3文件輸入輸出程序
5.3.1文件的基本操作
5.3.2文件輸入輸出程序的實現(xiàn)
5.4異常
5.4.1簡介
5.4.2異常處理
5.5本章小結(jié)
5.6習(xí)題與思考
5.7實訓(xùn)
實訓(xùn)5.7.1標(biāo)準(zhǔn)輸入輸出
實訓(xùn)5.7.2文件輸入輸出
實訓(xùn)5.7.3異常處理
第6章函數(shù)與模塊
6.1函數(shù)的基本概念
6.2Python語言中的函數(shù)
6.2.1函數(shù)定義和調(diào)用
6.2.2函數(shù)間的數(shù)據(jù)聯(lián)系
6.2.3函數(shù)中文檔字符串docstring的使用
6.3函數(shù)應(yīng)用
6.4模塊和Python標(biāo)準(zhǔn)庫
6.4.1模塊
6.4.2Python標(biāo)準(zhǔn)庫
6.5本章小結(jié)
6.6習(xí)題與思考
6.7實訓(xùn)函數(shù)和模塊的使用
第7章算法分析與設(shè)計
7.1算法性能分析
7.1.1重要性
7.1.2算法的時間性能分析與度量指標(biāo)
7.1.3計算時間的漸近估計表示
7.2查找法
7.2.1查找最大數(shù)最小數(shù)
7.2.2查找特定數(shù)
7.3排序法
7.3.1冒泡排序
7.3.2選擇排序
7.3.3插入排序
7.3.4基數(shù)排序
7.3.5快速排序——引入遞歸和分治概念
7.4遞歸和分治的思想
7.4.1遞歸概念
7.4.2遞歸調(diào)用方法與實現(xiàn)
7.4.3分治概念
7.5本章小結(jié)
7.6習(xí)題與思考
7.7實訓(xùn)算法實現(xiàn)與性能分析
第8章面向?qū)ο笏枷?br />8.1面向?qū)ο笏枷牒喗?br />8.1.1面向?qū)ο笏枷敫攀?br />8.1.2面向?qū)ο笾械幕靖拍?br />8.1.3面向?qū)ο蟮幕咎卣?br />8.2Python中的類和對象
8.2.1類的定義和對象的創(chuàng)建
8.2.2類的繼承
8.3面向?qū)ο笏枷霊?yīng)用——圖形界面編程
8.3.1圖形用戶界面
8.3.2Python圖形框架
8.3.3Python圖形繪制
8.4本章小結(jié)
8.5習(xí)題與思考
8.5.1單選題
8.5.2思考題
8.6實訓(xùn)
實訓(xùn)8.6.1Python面向?qū)ο缶幊坛醪?br />實訓(xùn)8.6.2Python圖形界面編程初步
附錄A習(xí)題與思考題解答
附錄BPython編程練習(xí)選編
B.1程序結(jié)構(gòu)與算法部分
B.2輸入輸出與文件部分
B.3算法分析與設(shè)計部分
B.4數(shù)據(jù)結(jié)構(gòu)部分
B.5異常處理部分
B.6函數(shù)部分