Python編程從入門到實戰(zhàn)-輕松過二級 (思政版)(第2版) 課件全套 余青松 第1-12章 Python程序設計導論-Python計算生態(tài)_第1頁
Python編程從入門到實戰(zhàn)-輕松過二級 (思政版)(第2版) 課件全套 余青松 第1-12章 Python程序設計導論-Python計算生態(tài)_第2頁
Python編程從入門到實戰(zhàn)-輕松過二級 (思政版)(第2版) 課件全套 余青松 第1-12章 Python程序設計導論-Python計算生態(tài)_第3頁
Python編程從入門到實戰(zhàn)-輕松過二級 (思政版)(第2版) 課件全套 余青松 第1-12章 Python程序設計導論-Python計算生態(tài)_第4頁
Python編程從入門到實戰(zhàn)-輕松過二級 (思政版)(第2版) 課件全套 余青松 第1-12章 Python程序設計導論-Python計算生態(tài)_第5頁
已閱讀5頁,還剩539頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二版▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍▍目錄(1)第1章Python程序設計導論第2章Python語言基礎第3章程序流程控制第4章函數(shù)和代碼復用第5章組合數(shù)據(jù)和數(shù)據(jù)結構第6章輸入、輸出和文件處理第7章數(shù)值處理與計算第8章字符串和文本處理第二版第9章面向對象的程序設計基礎第10章模塊和模塊化程序設計第11章數(shù)據(jù)庫訪問基礎第12章Python計算生態(tài)附錄A上??荚嚧缶V(Python)、樣卷及參考答案附錄B全國計算機等級考試(二級Python語言程序設計)考試大綱、樣卷及參考答案附錄C江蘇省高等學校計算機等級考試(二級Python語言)考試大綱、樣卷及參考答案目錄(2)本章要點:程序設計語言Python語言概述Python語言版本和開發(fā)環(huán)境開發(fā)和運行Python程序程序的打包和發(fā)布在線幫助和相關資源第1章Python程序設計導論1.1程序設計語言計算機系統(tǒng)由硬件和軟件組成物理計算機和外圍設備統(tǒng)稱為硬件計算機執(zhí)行的程序稱為軟件軟件一般分為系統(tǒng)軟件和應用軟件兩大類計算機程序指定計算機完成任務所需的一系列步驟編程語言,又稱為程序設計語言,是一組用來定義計算機程序的語法規(guī)則。每一種語言都有一套獨特的關鍵字和程序指令語法編程語言高級語言是獨立于計算機體系結構的語言,其最大特點是類似自然語言的形式描述對問題的處理過程C、C++、C#、Java和Python編程語言分為低級語言和高級語言兩類低級語言與特定的機器有關高級語言獨立于機器機器語言和匯編語言屬于低級語言機器語言是第一代程序設計語言,使用二進制代碼編寫程序,可讀性差,但能夠直接被計算機識別和執(zhí)行匯編語言是第二代程序設計語言,使用簡單的助記符來表示指令按范式對編程語言分類面向過程的編程語言:FORTRAN、COBOL、Basic、Ada、Pascal、C面向對象的編程語言:Java、C#、C++、Smalltalk、VisualBasic函數(shù)式編程語言:Lisp、Scheme、Haskell、F#邏輯式編程語言:PrologPython程序設計語言屬于多范式編程語言計算思維和程序設計方法程序設計方法屬于計算思維的范疇,常見的程序設計方法主要包括兩種結構化程序設計和面向對象的程序設計人類在認識世界和改造世界過程中形成了以下三種基本的思維邏輯思維:以推理和演繹為特征,以數(shù)學學科為代表實驗思維:以實驗和驗證為特征,以物理學科為代表計算思維:以設計和構造為特征,以計算機學科為代表邏輯思維:以推理和演繹為特征,以數(shù)學學科為代表實驗思維:以實驗和驗證為特征,以物理學科為代表計算思維:以設計和構造為特征,以計算機學科為代表計算思維的本質是抽象(Abstraction)和自動化(Automation)程序設計方法采用自頂向下方法設計的程序,一般通過自底向上(Bottom-Up)的方法來實現(xiàn)先實現(xiàn)、運行和測試每一個基本函數(shù),再測試由基本函數(shù)組成

的整體函數(shù),這樣有助于定位錯誤結構化程序設計通常采用自頂向下(Top-Down)、逐步求精(StepwiseRefinement)的程序設計方法自頂向下程序設計的基本思想問題分解、算法實現(xiàn)、組合程序程序的編寫和執(zhí)行將源文件轉換成機器語言有以下兩種轉換方法編譯:編譯器(Compiler)將源代碼翻譯成目標語言解釋:解釋器(Interpreter)直接解釋執(zhí)行高級程序設計語言用文本編輯器編寫和編輯程序Notepad、Vim、Emacs、Sublime等專用的IDE開發(fā)環(huán)境,例如IDLE、Spyder、VisualStudioCode等使用文本編輯器編寫一個程序后,將文件保存到磁盤上,包含程序代碼的文件稱之為源文件(sourcefile)010203根據(jù)執(zhí)行機制分類高級編程語言采用編譯方式執(zhí)行的語言屬于靜態(tài)語言,例如C、C++、C#、Java等優(yōu)點在于:編譯后的目標代碼可以直接運行;編譯所產(chǎn)生的目標代碼執(zhí)行速度通常更快靜態(tài)語言和腳本語言兩類采用解釋方式執(zhí)行的語言屬于腳本語言,例如JavaScript、PHP、Python等優(yōu)點在于:源代碼可以在任何操作系統(tǒng)上的解釋器中運行,可移植性好;解釋執(zhí)行需要保留源代碼,因此程序糾錯和維護十分方便01021.2Python語言概述英音/?pa?θ?n/,美音/?pa?θɑ?n/是一種解釋型、面向對象的編程語言是一個開源語言,擁有大量的庫,可以高效地開發(fā)各種應用程序Python語言的特點簡單、高級、面向對象、可擴展性、免費開源、可移植性、豐富的庫、可嵌入性Python語言的應用范圍操作系統(tǒng)管理、科學計算(NumPy、SciPy、Pandas、SymPy、Matplotlib、計算機視覺庫OpenCV、三維可視化庫VTK、醫(yī)學圖像處理庫ITK)、Web應用(Django、Flask、Pyramid等)、圖形用戶界面(GUI)開發(fā)(Tkinter、wxPython或者PyQt庫)、其他(游戲開發(fā)等)1.3Python語言版本和開發(fā)環(huán)境Python語言的集成開發(fā)環(huán)境IDLE(內置)、Spyder、PyCharm、Eclipse+Pydev插件、VisualStudio+PythonToolsforVisualStudio、PythonWin2個主要版本:Python2和Python3Python3在設計時,沒有考慮向下兼容Python語言的實現(xiàn):Python解釋器常用的Python實現(xiàn):Cpython、Jython、IronPython、PyPy下載和安裝Python本書基于Windows10和

Python3.12

構建Python開發(fā)平臺【例1.1】下載Python安裝程序/downloads/windows/單擊超鏈接超鏈接Windowsinstaller(64-bit),以下載目前最新版本Python3.12.2(64位)的安裝程序python-3.12.2-amd64.exe【例1.2】安裝Python應用程序(1)雙擊下載的Windows格式安裝文件python-3.12.2-amd64.exe(2)在定制Python對話框窗口中,注意需要選中“Addpython.exetoPATH”復選框(3)單擊InstallNow超鏈接,安裝Python程序安裝和管理Python擴展包(1)pip的典型應用是從PyPI(PythonPackageIndex)上安裝Python第三方包見右圖。Python3.4以后的版本包含pip和setuptools庫pip用于安裝管理Python擴展包setuptools用于發(fā)布Python包0102安裝和管理Python擴展包(2)pip支持安裝(install)、下載(download)、卸載(uninstall)、羅列(list)、查看(show)、查詢(search)等一系列安裝、維護和管理子命令【例1.3】更新pip包在Windows命令提示符窗口中,輸入命令行命令“pipinstall--upgradepip”,更新pip包【例1.4】安裝NumPy包在Windows命令提示符窗口中,輸入命令行命令“pipinstallNumPy”,安裝NumPy包【例1.5】安裝Matplotlib包在Windows命令提示符窗口中,輸入命令行命令“pipinstallMatplotlib”,安裝Matplotlib包0102031.4開發(fā)和運行Python程序開發(fā)和運行Python程序一般包括以下兩種方式(1)交互式。在Python解釋器命令行窗口中,輸入Python代碼,解釋器及時響應并輸出結果交互式一般適用于調試少量代碼Python解釋器包括Python、IDLEshell、IPython(第三方包)等(2)文件式。將Python程序編寫并保存在一個或者多個源代碼文件中,然后通過Python解釋器來編譯執(zhí)行。文件式適用于較復雜應用程序的開發(fā)使用Python解釋器解釋執(zhí)行Python程序(1)在Python解釋器中交互式執(zhí)行Python代碼的過程一般稱之為REPL(Read-Eval-PrintLoop,“讀取-求值-輸出”循環(huán))Python解釋器的提示符默認為>>>輸入exit()或者quit()可以退出Python解釋器【例1.6】運行Python解釋器“開始”|“所有應用”|Python3.12|Python3.12(64-bit)【例1.7】輸出Helloworld!>>>print('Hello,world!')【例1.8】使用Python解釋器進行數(shù)學運算>>>11+22+33+44+55#輸出:165>>>(1+0.01)**365【例1.9】使用解釋器環(huán)境中特殊變量:_>>>11+22#輸出:33>>>_#輸出:33>>>_+33#輸出:66【例1.10】同時運行多個表達式:同時運行多個以逗號分隔的表達式,返回結果為元組>>>2,2**10#輸出:(2,1024)【例1.11】關閉Python解釋器Ctrl+Z及回車鍵;或者輸入quit()命令;或者直接關閉命令行窗口使用Python解釋器解釋執(zhí)行Python程序(2)運行Python集成開發(fā)環(huán)境IDLE(1)【例1.12】運行Python內置集成開發(fā)環(huán)境IDLE“開始”|“所有應用”|Python3.12|IDLE(Python3.1264-bit)【例1.13】使用集成開發(fā)環(huán)境IDLE解釋執(zhí)行Python語句>>>print('Good!'*5)Good!Good!Good!Good!Good!0102運行Python集成開發(fā)環(huán)境IDLE(2)【例1.14】使用IDLE執(zhí)行多行代碼打印0到9范圍的數(shù)字,分隔符為空格>>>forxinrange(10):print(x,end='')【例1.15】關閉IDLE輸入quit()命令;或者直接關閉IDLE窗口,均可以關閉Python解釋器0102使用文本編輯器和命令行編寫和執(zhí)行Python源文件程序(1)將Python程序編寫成文本文件(.py)編寫Python源代碼文件程序、并通過Python編譯器/解釋器的執(zhí)行程序的流程使用文本編輯器和命令行編寫和執(zhí)行Python源文件程序(2)Helloworld程序(hello.py)源代碼分析第1行為注釋。以符號#開始,到行尾結束第2行調用內置庫的函數(shù)print,輸出:Hello,World!在記事本中,輸入程序源代碼。文件另存為hello.py注意,“保存類型”選擇“所有文件”,“編碼”選擇UTF-80102【例1.16】使用文本編輯器(記事本)編寫Helloworld程序使用文本編輯器和命令行編寫和執(zhí)行【例1.17】使用Windows命令提示符窗口運行hello.py(1)執(zhí)行

“開始”|“所有應用”|“Windows系統(tǒng)”|“命令提示符”,打開Windows命令提示符窗口(2)輸入命令行命令“pythonc:\pythonb\ch01\hello.py”,按回車鍵執(zhí)行程序(3)輸入命令行命令“c:\pythonb\ch01\hello.py”,按回車鍵執(zhí)行程序(4)輸入“cdc:\pythonb\ch01”,輸入命令行命令“pythonhello.py”,按回車鍵執(zhí)行程序(5)切換到工作目錄“c:\pythonb\ch01”,然后輸入命令行命令“hello.py”,按回車鍵執(zhí)行程序使用文本編輯器和命令行編寫和執(zhí)行(1)程序hello2.py的內容如下:importrandom#導入庫模塊print("Hello,World")#輸出:Hello,Worldprint("你今天的幸運隨機數(shù)是:",random.choice(range(10)))#輸出從0到9之間隨機選擇的數(shù)input()#等待用戶輸入(3)程序hello1.py中每一行代碼的含義如下:第1行代碼導入庫模塊random。Python可以導入和使用功能豐富的標準庫或擴展庫。第2行代碼調用內置庫函數(shù)print()輸出“Hello,World”。第3行代碼使用random庫中的choice函數(shù),在0~9范圍中隨機選擇一個數(shù)并輸出。第4行代碼調用內置庫函數(shù)input()。用戶按Enter鍵,程序結束運行(2)在資源管理器中,雙擊c:\pythonb\ch01目錄下的hello2.py文件,執(zhí)行hello2.py源程序【例1.18】使用資源管理器運行hello2.py使用集成開發(fā)環(huán)境IDLE編寫和執(zhí)行Python源文件程序importrandom#導入庫模塊print("GoodLuck!")#輸出:GoodLuck!print("你今天的幸運隨機數(shù)是:",random.choice(range(10)))#輸出從0到9之間隨機選擇的數(shù)input()#等待用戶輸入【例1.19】使用IDLE編寫求解2的1024次方的程序(bigint.py)(1)“開始”|“所有應用”|Python3.12|IDLE(Python3.1264-bit),打開內置集成開發(fā)環(huán)境IDLE(2)執(zhí)行IDLE菜單命令File|NewFile(或者按快捷鍵Ctrl+N),新建Python源代碼文件(3)在Python源代碼編輯器中輸入程序源代碼:print("2的1024次方:",2**1024)(4)執(zhí)行IDLE菜單命令File|Save(或者按快捷鍵Ctrl+S),保存文件為bigint.py。(5)執(zhí)行IDLE菜單命令Run|RunModule(或者按快捷鍵F5),輸出程序運行結果【例1.20】使用IDLE編輯hello2.py程序1.5程序的打包和發(fā)布【例1.21】安裝PyInstaller包:

pipinstallpyinstaller使用PyInstaller生成可執(zhí)行程序:pyinstaller選項Python源文件PyInstaller支持如下常用的選項-h或者--help:查看幫助信息-F或者--onefile:生成單個的可執(zhí)行文件-D或者--onedir:生成一個目錄,其中包含可執(zhí)行文件以及多個相關的支撐文件和子目錄--clean:清理PyInstaller緩存,刪除打包和發(fā)布過程中的臨時文件【例1.22】使用PyInstaller生成可執(zhí)行文件:pyinstaller-Fhello2.py將Python源代碼打包變成可執(zhí)行文件,以在沒有安裝Python解釋器的操作系統(tǒng)中直接運行Python程序,這個過程叫做“程序發(fā)布”Python程序打包和發(fā)布最常用的是第三方的擴展包PyInstaller1.6在線幫助和相關資源Python交互式幫助系統(tǒng)直接鍵入help()函數(shù)可進入交互式幫助系統(tǒng)鍵入help(object)可獲取關于object對象的幫助信息【例1.23】使用Python交互式幫助系統(tǒng)示例(1)進入交互式幫助系統(tǒng)。鍵入help(),按回車鍵(2)顯示安裝的所有模塊。鍵入modules,然后按回車鍵(3)顯示與random相關的模塊。鍵入modulesrandom,然后按回車鍵(4)顯示模塊random的幫助信息。鍵入random,然后按回車鍵(5)顯示random模塊random函數(shù)的信息。鍵入random.random,然后按回車鍵(6)退出幫助系統(tǒng)。鍵入quit,然后按回車鍵【例1.24】使用Python內置函數(shù)獲取幫助信息(1)查看Python內置對象列表。輸入命令:>>>dir(__builtins__)(2)查看float的信息。輸入命令:>>>float(3)查看內置類float的幫助信息在線幫助和相關資源Python文檔:Python語言及標準模塊的詳細參考信息【例1.25】使用Python文檔(1)打開Python文檔。執(zhí)行Windows菜單命令“開始”|“所有應用”|Python3.12|Python3.12Manuals(64-bit)(用戶也可以在IDLE環(huán)境按F1鍵),打開Python文檔(2)瀏覽random模塊幫助信息。利用“LibraryReference”超鏈接,查找并瀏覽random模塊的幫助信息(3)查找有關math的幫助信息。在右上角“QuickSearch”搜索框中鍵入math,查看有關math的幫助信息Python官網(wǎng):

/用戶可以下載各種版本的Python程序或者查看幫助文檔等Python擴展庫索引(PyPI):

/所有人都可以下載第三方庫或上傳自己開發(fā)的庫到PyPI。PyPI推薦使用pip包管理器來下載第三方庫010203實驗和習題上機實踐完成課本實例1.1~實例1.25,熟悉Python編輯、開發(fā)和運行環(huán)境復習題單選題填空題思考題考級題庫本章所涉及的全國計算機等級考試(二級Python語言程序設計)、江蘇省高等學校計算機等級考試(二級Python語言)以及上海市高等學校計算機等級考試二級(Python程序設計)題庫(真題和模擬題)以電子版形式提供(開源學習資源,隨時增補完善),具體請掃描教程二維碼本章小結本課件版權歸清華大學出版社所有,僅提供教師教學使用,其他用途一律視為侵權第二版第二章Python語言基礎本章要點:2.1Python程序概述2.2Python對象和引用2.3標識符及其命名規(guī)則2.4表達式和運算符2.5語句2.6函數(shù)和模塊2.7數(shù)據(jù)類型2.8類和對象2.9模塊和包2.10綜合應用:turtle模塊和海龜繪圖2.1Python程序概述【例2.1】已知三角形的三條邊,求三角形的面積(area.py)。提示:假設三條邊長分別為a、b和c,則三角形的面積s=。其中,h為三角形周長的一半importmatha=3.0b=4.0c=5.0h=(a+b+c)/2

#三角形周長的一半s=math.sqrt(h*(h-a)*(h-b)*(h-c))#三角形面積print(s)Python程序構成Python程序由模塊組成,模塊對應于擴展名為.py的源文件。一個Python程序由一個或者多個模塊構成。例2.1程序由模塊area.py和內置模塊math組成。模塊由語句組成。模塊即Python源文件。運行Python程序時,按模塊中語句順序,依次執(zhí)行語句。例2.1程序中,importmath為導入模塊語句;print(s)為調用函數(shù)表達式語句;其余為賦值語句。語句是Python程序的過程構造塊,用于創(chuàng)建對象、變量賦值、調用函數(shù)、控制分支、創(chuàng)建循環(huán)、增加注釋等。語句包含表達式。例2.1程序中,語句importmath用導入math模塊,并依次執(zhí)行其中的語句;在語句“a=3.0”中,字面量表達式3.0創(chuàng)建一個值為3.0的float型對象,并綁定到變量a;在語句“h=(a+b+c)/2”中,算術表達式(a+b+c)/2運算結果為一個新的float型對象,并綁定到變量h;“#”引導注釋語句;在語句print(s)中,調用內置函數(shù)print(),輸出對象s的值。表達式用于創(chuàng)建和處理對象。在例2.1程序的語句“s=math.sqrt(h*(h-a)*(h-b)*(h-c))”中,表達式h*(h-a)*(h-b)*(h-c)的運算結果為一個新的float對象,math.sqrt調用模塊math中的sqrt()函數(shù),計算參數(shù)對象的平方根。Python程序可以分解為模塊、語句、表達式和對象。概念上,其對應關系如下:2.2Python對象和引用Python3中,一切皆為對象每個對象由標識(identity)、類型(type)和值(value)標識數(shù)據(jù)表示為對象對象本質上是一個內存塊,擁有特定的值,支持特定類型的運算操作Python中的對象(1)類型(type)用于表示對象所屬的數(shù)據(jù)類型(類),數(shù)據(jù)類型(類)用于限定對象的取值范圍,以及允許執(zhí)行的處理操作。使用內置函數(shù)type(obj1)可以返回對象obj1所屬的數(shù)據(jù)類型值(value)用于表示對象的數(shù)據(jù)類型的值。使用內置函數(shù)print(obj1)可返回對象obj1的值標識(identity)用于唯一標識一個對象,通常對應于對象在計算機內存中的位置。使用內置函數(shù)id(obj1)可返回對象obj1的標識(CPython的實現(xiàn)為內存存放位置)Python中的對象(2)>>>123

#輸出:123>>>id(123)

#輸出:140706558370656>>>type(123)

#輸出:<class'int'>>>>print(123)

#輸出:123>>>type(abs)

#輸出:<class'builtin_function_or_method'>>>>id(abs)

#輸出:2529313427104>>>type(range)

#輸出:<class'type'>>>>id(range)

#輸出:140706557885440【例2.2】使用內置函數(shù)type()、id()和print()查看對象【例2.3】查看Python內置函數(shù)對象變量、賦值語句和對象的引用(1)Python對象是位于計算機內存中的一個內存數(shù)據(jù)塊為了引用對象,必須通過賦值語句,把對象賦值給變量(也稱之為把對象綁定到變量)指向對象的引用即變量>>>a=1#字面量表達式1創(chuàng)建值為1的int

型實例對象,并綁定到變量a>>>b=2#字面量表達式2創(chuàng)建值為2的int型實例對象,并綁定到變量b>>>c=a+b#表達式a+b創(chuàng)建值為3的int型實例對象,并綁定到變量c【例2.4】使用賦值語句把對象綁定到變量變量、賦值語句和對象的引用(2)Python還支持以下賦值語句(1)鏈式賦值(chainedassignment)(2)復合賦值語句(3)系列解包賦值>>>x=y=123#變量x和y均指向int對象123>>>i=1#變量i指向int對象1>>>i+=1#先計算表達式i+1的值,然#后創(chuàng)建一個值為2的int對象,#并綁定到變量i>>>a,b=1,2#變量a指向int對象1,變量b#指向int對象2>>>a,b=b,a#兩個變量a和b的值進行交換【例2.5】其他賦值語句舉例常量Python語言不支持常量,即沒有語法規(guī)則限制改變一個常量的值。>>>TAX_RATE=0.17

#浮點類型常量TAX_RATE>>>PI=3.14

#浮點類型常量PI>>>ECNU='華東師范大學'#字符串常量ECNU【例2.6】常量示例Python語言使用約定,聲明在程序運行過程中不會改變的變量為常量,通常使用全大寫字母(可以使用下劃線增加可閱讀性)表示常量名。對象內存示意圖(1)Python程序運行時,在內存中會創(chuàng)建各種對象(位于堆內存中),通過賦值語句,將對象綁定到變量(位于棧內存中),通過變量引用對象,進行各種操作多個變量可以引用同一個對象如果一個對象不再被任何有效作用域中的變量引用,則會通過自動垃圾回收機制,回收該對象占用的內存對象內存示意圖(2)

>>>i=100>>>i=i+1【例2.7】變量增量運算示例以及相應的對象內存示意圖第一條語句,創(chuàng)建一個值100的int對象,并綁定到變量i;第二條語句,先計算表達式i+1的值,然后創(chuàng)建一個值為101的int對象,并綁定到變量iii

100

100

1011i=100i=i+1對象內存示意圖(3)>>>a=123

#a指向值為123的int型實例對象>>>b=456

#b指向值為456的int型實例對象>>>t=a

#變量t和a一樣,指向(引用)對象實例123>>>a=b

#變量a和b一樣,指向(引用)對象實例456>>>b=t

#變量b和t一樣,指向(引用)對象實例123【例2.8】交換兩個變量的示例以及相應的對象內存示意圖不可變對象(immutable)>>>a=18

#變量a指向int對象18>>>id(a)

#輸出:140706365363776。表示a指向的int對象18的id>>>a=25

#變量a指向int對象25>>>id(a)

#輸出:140706365364000。表示a指向的int對象25的id>>>b=25

#變量b指向int對象25>>>id(b)

#輸出:140706365364000。表示b指向的int對象25的id>>>id(25)

#輸出:140706365364000。表示int對象25的id不可變對象一旦創(chuàng)建,其值就不能被修改,例如:int、str、complex等【例2.9】不可變對象示例可變對象(mutable)>>>x=y=[1,2,3]

#變量x和y指向list對象[1,2,3]>>>id(x)

#輸出:1656936944328。表示變量x指向的list對象[1,2,3]的id>>>id(y)

#輸出:1656936944328。表示變量y指向的list對象[1,2,3]的id>>>x.append(4)

#變量x指向的list對象[1,2,3]附加一個元素4>>>x

#輸出:[1,2,3,4]。表示變量x指向的list對象[1,2,3,4]>>>id(x)

#輸出:1656936944328。變量x指向的list對象[1,2,3,4]的id未改變>>>xisy

#輸出:True。表示變量x和y指向同一個list對象[1,2,3,4]>>>x==y

#輸出:True。表示變量x和y指向的list對象值相等>>>z=[1,2,3,4]

#變量z指向的list對象[1,2,3,4]>>>id(z)

#輸出:1656965757064。表示變量z指向的list對象[1,2,3,4]的id>>>xisz

#輸出:False。表示變量x和z指向不同的list對象[1,2,3,4]>>>x==z

#輸出:True。表示變量x和z指向的list對象值相等【例2.10】可變對象示例可變對象的值可以被修改Python對象的可變性取決于其數(shù)據(jù)類型的設計,即是否允許改變其值標識符是變量、函數(shù)、類、模塊和其他對象的名稱標識符的第一個字符必須是字母、下劃線(“_”),其后的字符可以是字母、下劃線或數(shù)字一些特殊的名稱,如if、for等保留關鍵字,不能作為標識符例如,a_int、a_float、str1、_strname、func1為正確的變量名;而99var、It'sOK、for(關鍵字)為錯誤的變量名2.3標識符及其命名規(guī)則標識符注意事項Python標識符區(qū)分大小寫。例如,ABC和abc視為不同的名稱以雙下劃線開始和結束的名稱通常具有特殊的含義。例如,__init__為類的構造函數(shù),一般應避免使用避免使用Python預定義標識符名作為自定義標識符名。例如:NotImplemented、Ellipsis、int、float、list、str、tuple等010302保留關鍵字>>>

help()help>

keywordshelp>

ifhelp>

quit關鍵字即預定義保留標識符關鍵字不能在程序中用作標識符,否則會產(chǎn)生編譯錯誤【例2.11】使用Python幫助系統(tǒng)查看關鍵字Python預定義標識符Python語言包含許多預定義內置類、異常、函數(shù)等,例如,float、ArithmeticError、print等用戶應該避免使用Python預定義標識符名作為自定義標識符名使用Python的內置函數(shù)dir(__builtins__),可以查看所有內置的異常名、函數(shù)名等Python語言遵循的命名規(guī)則類型命名規(guī)則舉例模塊/包名全小寫字母,簡單有意義,如果需要可以使用下畫線math、sys函數(shù)名全小寫字母,可以使用下畫線增加可閱讀性foo(),my_func()變量名全小寫字母,可以使用下畫線增加可閱讀性age、my_var類名采用PascalCase命名規(guī)則,即多個單詞組成名稱,每個單詞除第一個字母大寫外,其余的字母均小寫MyClass常量名全大寫字母,可以使用下畫線增加可閱讀性LEFT、TAX_RATE2.4表達式和運算符>>>importmath

#導入math模塊>>>a=2;b=10

#變量a指向int對象2,變量b指向int對象10>>>a+b

#輸出:1212>>>math.pi

#輸出:3.1415926535897933.141592653589793>>>math.sin(math.pi/2)#輸出:1.01.0表達式的組成操作數(shù)、運算符和圓括號按一定規(guī)則組成表達式運算符的優(yōu)先級控制各個運算符的計算順序【例2.12】表達式示例表達式的書寫規(guī)則表達式從左到右在同一個基準上書寫。例如,數(shù)學公式a2+b2應該寫為:a**2+b**2乘號不能省略,例如,數(shù)學公式ab(表示a乘以b)應寫為:a*b括號必須成對出現(xiàn),而且只能使用圓括號;圓括號可以嵌套使用010302運算符運算符用于在表達式中對一個或多個操作數(shù)進行計算并返回結果值表達式計算順序取決于運算符的結合順序和優(yōu)先級可以使用圓括號“()”強制改變運算順序>>>11+22*3

77>>>(11+22)*399【例2.14】表達式中運算符的優(yōu)先級示例Python運算符及其優(yōu)先級2.5Python語句簡單語句包括:表達式語句、賦值語句、assert語句、pass空語句、del語句、return語句、yield語句、raise語句、break語句、continue語句、import語句、global語句、nonlocal語句等復合語句包括:if語句、while語句、for語句、try語句、with語句、函數(shù)定義、類定義等語句是Python程序的過程構造塊,用于定義函數(shù)、定義類、創(chuàng)建對象、變量賦值、調用函數(shù)、控制分支、創(chuàng)建循環(huán)等0201Python語句分為簡單語句和復合語句Python語句示例importmath

#import語句,用于導入math模塊r=float(input("請輸入圓的半徑r:"))#賦值語句。輸入圓的半徑r,并轉換為float數(shù)據(jù)類型p=2*math.pi*r

#賦值語句。計算圓的周長s=math.pi*r**2

#賦值語句。計算圓的面積print("圓的周長為:",p)

#表達式語句。輸出圓的周長print("圓的面積為:",s)

#表達式語句。輸出圓的面積【例2.15】Python語句示例(statement.py):輸入圓的半徑r,計算并輸出圓的周長和面積程序運行結果如下請輸入圓的半徑r:5圓的周長為:31.41592653589793圓的面積為:78.53981633974483Python語句的書寫規(guī)則使用換行符分隔,一般情況下,一行一條語句>>>

#正確>>>print("abc")#報錯。IndentationError:unexpectedindent從第一列開始,前面不能有任何空格,否則會產(chǎn)生語法錯誤。注意,注釋語句可以從任意位置開始;復合語句構造體必須縮進>>>print("如果語句太長,可以使用續(xù)行符(\),\續(xù)行內容。")反斜杠(\)用于一個代碼跨越多行的情況。如果語句太長,可以使用續(xù)行符(\)>>>a=0;b=0;c=0

#變量a、b和c均指向int對象0>>>s="abc";print(s)#變量s指向值為"abc"的str型實例對象,并輸出abc分號(;)用于在一行書寫多條語句01030204復合語句及其縮進書寫規(guī)則復合語句(條件語句、循環(huán)語句、函數(shù)定義和類定義,例如if、for、while、def、class等)由頭部語句(headerline)和構造體語句塊(suites)組成>>>foriinrange(1,11):print(i,end='')...12345678910頭部語句由相應的關鍵字(例如,if)開始,構造體語句塊則為下一行開始的一行或多行縮進代碼通??s進是相對頭部語句縮進四個空格,也可以是任意空格,但同一構造體代碼塊的多條語句縮進的空格數(shù)必須一致對齊。如果語句不縮進,或縮進不一致,將導致編譯錯誤如果條件語句、循環(huán)語句、函數(shù)定義和類定義比較短,可以放在同一行010302構造體語句塊由一條或多條語句組成注釋語句以符號“#”開始,到行末結束。Python注釋語句可以出現(xiàn)在任何位置Python解釋器將忽略所有的注釋語句,注釋語句不會影響程序的執(zhí)行結果>>>

#A"helloworld!"program>>>

#注釋可以在任意位置,以#開始,到行末結束>>>print("helloworld")#輸出:helloworldhelloworld【例2.16】注釋語句示例空語句pass>>>defdo_nothing():

pass【例2.17】空語句示例表示一個空的代碼塊2.6函數(shù)和模塊(1)函數(shù)是可以重復調用的代碼塊函數(shù)的創(chuàng)建和調用聲明創(chuàng)建函數(shù)時,可以聲明函數(shù)的參數(shù),即形式參數(shù),簡稱形參;調用函數(shù)時,需要提供函數(shù)需要的參數(shù)的值,即實際參數(shù),簡稱實參函數(shù)可以使用return返回值defsayHello():

#創(chuàng)建函數(shù)對象sayHelloprint('HelloWorld!')

#函數(shù)體print('Tobeornottobe,thisisaquestion!’)

#函數(shù)體sayHello()【例2.18】聲明和調用函數(shù)示例(sayHello.py)def·函數(shù)名([形參列表])····函數(shù)體函數(shù)名([實參列表])程序運行結果如下:HelloWord!Tobeornottobe,thisisaquestion!2.6函數(shù)和模塊(2)defgetValue(b,r,n):

#創(chuàng)建函數(shù)對象getValuev=b*((1+r)**n)

#計算最終收益vreturnv

#使用return返回值total=getValue(1000,0.05,5)#調用函數(shù)getValueprint(total)

#打印結果【例2.19】聲明和調用函數(shù)getValue(b,r,n),根據(jù)本金b、年利率r和年數(shù)n,計算最終收益v程序運行結果如下:1276.2815625000003內置函數(shù)(1)dir()、type()、id()、help()、len()、sum()、max()、min()等輸入函數(shù)input()和輸出函數(shù)print()實現(xiàn)用戶交互>>>s="Tobeornottobe,thisisaquestion!">>>type(s)#返回對象s所屬的數(shù)據(jù)類型。輸出:<class'str'>>>>len(s)#返回字符串s的長度。輸出:39>>>s1=[1,2,3,4,5]>>>max(s1)#返回列表s1的最大值。輸出:5>>>min(s1)#返回列表s1的最小值。輸出:1>>>sum(s1)/len(s1)#返回列表s1的平均值。輸出:3.0【例2.19】內置函數(shù)使用示例1內置函數(shù)(2)name=input("what'syourname:")print("Hello,",name)【例2.20】內置函數(shù)使用示例2(hello2.py)程序運行結果如下what'syourname:pineHello,pine模塊函數(shù)通過import語句,可以導入模塊module,然后使用module.function(arguments)的形式調用模塊中的函數(shù)>>>importmath>>>math.sin(2)0.9092974268256817【例2.22】模塊的導入示例1>>>frommathimportsin>>>sin(2)0.9092974268256817【例2.23】模塊的導入示例2模塊函數(shù)Python語言提供了海量的內置函數(shù)、標準庫函數(shù)、第三方模塊函數(shù)函數(shù)的調用方法由應用程序編程接口(API)確定模塊函數(shù)調用方法(簽名)功能描述內置函數(shù)print(x)輸出abs(x)x的絕對值type(o)o的類型len(a)a的長度Python標準庫math模塊中的函數(shù)math.sin(x)x的正弦(參數(shù)以弧度為單位)math.cos(x)x的余弦(參數(shù)以弧度為單位)math.exp(x)x的指數(shù)函數(shù)(即e)math.log(x,b)x的以b為底的對數(shù)(即)。底數(shù)b缺省為e,即自然對數(shù)(即)math.sqrt(x)x的平方根Python標準庫random模塊中的函數(shù)random.random()返回[0,1)數(shù)據(jù)區(qū)間的隨機浮點數(shù)random.randrange(x,y)返回[x,y)數(shù)據(jù)區(qū)間的隨機整數(shù),其中x和y均為整數(shù)xlogbxlogexPython典型的函數(shù)調用函數(shù)調用返回值說明print('Hello')在控制臺輸出字符串Hello內置函數(shù)len('Hello')5內置函數(shù)math.sin(1)0.8414709848078965math模塊中的函數(shù)math.sqrt(-1.0)運行時錯誤負數(shù)的平方根random.random()0.3151503393010261random模塊中的函數(shù)。注意,每次產(chǎn)生不同的隨機數(shù)2.7數(shù)據(jù)類型Python語言中,一切皆為對象,而每個對象都屬于某個數(shù)據(jù)類型Python的數(shù)據(jù)類型包括內置的數(shù)據(jù)類型、模塊中定義的數(shù)據(jù)類型和用戶自定義的類型數(shù)值數(shù)據(jù)類型:int、bool、float、complex序列數(shù)據(jù)類型:不可變(str、tuple、bytes)和可變(list、bytearray)集合數(shù)據(jù)類型:set、frozenset字典數(shù)據(jù)類型:dict。例如:{1:"one",2:"two"}整數(shù)類型(1)整型字面量:數(shù)字字符串(前面可以帶負號-)>>>a=123>>>type(a)<class'int'>>>>1_000_000_000_000_0001000000000000000>>>0x_FF_FF_FF_FF4294967295【例2.34】整型字面量示例Python3.8及以上版本支持使用下劃線作為整數(shù)或者浮點數(shù)的千分位標記,以增強大數(shù)值的可閱讀性。二進制、八進制、十六進制則使用下劃線區(qū)分4位標記整數(shù)類型(2)整數(shù)的運算算術運算、位運算、內置函數(shù)、math模塊中的數(shù)學運算函數(shù)浮點類型(1)>>>3.14

#輸出:3.143.14>>>type(3.14)#輸出:<class'float'><class'float'>【例2.25】浮點類型字面量示例舉例說明1.23,-24.5,10,0.2帶小數(shù)點的數(shù)字字符串1.,.2小數(shù)點的前后0可以省略3.14e-10,4E210,4.0e+210科學計數(shù)法(e或E表示底數(shù)10),如3.14e-10=3.14*10-10浮點類型常量浮點數(shù)的運算算術運算,math模塊中浮點數(shù)運算的函數(shù)浮點類型(2)復數(shù)類型(1)屬性/方法說明示例real復數(shù)的實部>>>(1+2j).real#結果:1.0imag復數(shù)的實部>>>(1+2j).imag#結果:2.0conjugate()共軛復數(shù)>>>(1+2j).conjugate()#結果:(1-2j)complex對象屬性和方法>>>1+2j

#輸出:(1+2j)>>>type(1+2j)

#輸出:<class'complex’>>>>complex

#輸出:<class'complex'>>>>c=complex(4,5)>>>c

#輸出:(4+5j)【例2.26】復數(shù)字面量示例創(chuàng)建complex對象復數(shù)類型(2)表達式結果說明1+2j(1+2j)復數(shù)字面量(1+2j)+(3+4j)(4+6j)加法(1+2j)-(3+4j)(-2-2j)減法(1+2j)*(3+4j)(-5+10j)乘法(1+2j)/(3+4j)(0.44+0.08j)除法(1+2j)**2.0(-3+4j)乘冪(1+2j)/0.0運行時錯誤除法。除數(shù)不能為0cmath.sqrt(1+2j)(1.272019649514069+0.7861513777574233j)平方根(調用數(shù)學模塊函數(shù))cmath.sqrt(-2.0)1.4142135623730951j復數(shù)的平方根復數(shù)的運算>>>a=1+2j>>>b=complex(4,5)#復數(shù)4+5j>>>a+b

#復數(shù)相加

(5+7j)>>>importcmath>>>cmath.sqrt(b)

#復數(shù)的平方根(2.280693341665298+1.096157889501519j)【例2.2】復數(shù)運算示例布爾類型bool數(shù)據(jù)類型包含兩個值True(真)或False(假)>>>True,False

#輸出:(True,False)(True,False)>>>type(True),type(False)(<class'bool'>,<class'bool'>)【例2.28】布爾值字面量示例>>>bool(0)

#輸出:FalseFalse>>>bool(1)

#輸出:TrueTrue>>>bool("abc")

#輸出:TrueTrue【例2.29】bool對象示例0102混合運算和數(shù)值類型轉換顯式轉換(強制轉換)使用target-type(value)將表達式強制轉換為所需的數(shù)據(jù)類型混合運算和隱式轉換int、float和complex對象可以混合運算如果表達式中包含complex對象,則其他對象自動轉換(隱式轉換)為complex對象,結果為complex對象如果表達式中包含float對象,則其他對象自動轉換(隱式轉換)為float對象,結果為float對象0102類型轉換示例>>>int(1.23)

#輸出:1>>>float(10)

#輸出:10.0>>>bool("abc")

#輸出:True

>>>

float("123xyz")#報錯。ValueError:couldnotconvertstringtofloat:'123xyz'【例2.31】顯式類型轉換示例>>>

f=123+1.23>>>f#輸出:124.23>>>type(f)#輸出:<class'float'>>>>123+True#True轉換為1。輸出:124>>>123+False#False轉換為0。輸出:123【例2.30】隱式類型轉換示例字符串類型Python中沒有獨立的字符數(shù)據(jù)類型,字符即長度為1的字符串Python內置數(shù)據(jù)類型str,用于字符串處理str對象的值為字符系列str對象(字符串)是不可變對象使用單引號或雙引號括起來的內容,是字符串字面量Python字符串字面量>>>'abc'

#輸出:'abc‘'abc'>>>"Hello"

#輸出:'Hello‘'Hello'>>>type("python")

<class'str'>>>>'Blue''Sky'

'BlueSky'【例2.32】字符串字面量示例單引號('')。包含在單引號中的字符串,其中可以包含雙引號。雙引號("")。包含在雙引號中的字符串,其中可以包含單引號。三單引號()。包含在三單引號中的字符串,可以跨行。''''''三雙引號()。包含在雙引號中的字符串,其中可以包含單引號。''''''''''''01020304字符串編碼>>>ord('A')

#輸出:6565>>>chr(65)

#輸出:'A‘'A'>>>ord('張')

#輸出:2435224352>>>chr(24352)#輸出:'張‘'張'Python3字符默認為16位Unicode編碼使用內置函數(shù)ord()可以把字符轉換為對應的Unicode碼;使用內置函數(shù)chr()可以把十進制數(shù)轉換為對應的字符轉義字符>>>s='a\tb\tc\\td'>>>s

#輸出:'a\tb\tc\\td'>>>print(s)

#輸出:abc\td>>>'\101'

#輸出:'A'>>>'\x41'

#輸出:'A'>>>s=r'換\t行\(zhòng)t符\n'>>>s

#輸出:'換\\t行\(zhòng)\t符\\n'>>>print(s)

#輸出:換\t行\(zhòng)t符\n轉義字符串示例轉義序列字符\’單引號\”雙引號\\反斜杠\a響鈴(BEL)\b退格(BS)\f換頁(FF)\n換行(LF)\r回車(CR)\t水平制表符(HT)\v垂直制表符(VT)\ooo八進制Unicode碼對應的字符\xhh十六進制Unicode碼對應的字符使用r''或R''的字符串稱之為原始字符串,其中包含的任何字符都不進行轉義字符串的運算字符串對象支持關系運算、使用運算符+拼接兩個字符串、內置函數(shù)、str對象方法等運算操作字符串實際上是字符序列,故支持序列數(shù)據(jù)類型的基本操作,包括索引訪問、切片操作、連接操作、重復操作、成員關系操作、以及求字符串長度、最大值、最小值等常用的字符串表達式表達式結果說明'Hello,'+'World''Hello,World'字符串拼接'123'+'456''123456'字符串拼接(不是兩數(shù)相加)'1234'+'+'+'99''1234+99'兩次字符串拼接'123'+456運行時錯誤第二個操作數(shù)不是str數(shù)據(jù)類型"#"*10或10*"#"'##########'字符串重復"abc"=="ABC"False比較字符串是否相等len('World')5返回字符串的長度"abc".upper()ABC調用字符串對象的方法字符串的格式化【例2.33】字符串示例(string.py):格式化輸出字符串堆積的三角形>>>"學生人數(shù){0},平均成績{1}".format(15,81.2)'學生人數(shù)15,平均成績81.2'>>>str.format("學生人數(shù){0},平均成績{1:2.2f}",15,81.2)'學生人數(shù)15,平均成績81.20'>>>format(81.2,"0.5f")#輸出:'81.20000'>>>"學生人數(shù)%4d,平均成績%2.1f"%(15,81)'學生人數(shù)15,平均成績81.0'print("1".center(20))

#1行20個字符,居中對齊print(format("121","^20"))

#1行20個字符,居中對齊print(format("12321","^20"))

#1行20個字符,居中對齊print("1".rjust(20,"*"))

#1行20個字符,右對齊,加*號print(format("121","*>20"))

#1行20個字符,右對齊,加*號print(format("12321","*>20"))

#1行20個字符,右對齊,加*號字符串.format(值1,值2…)str.format(格式字符串1,值1,值2)format(值格式字符串)格式字符串%(值1,值2…)#兼容Python2的格式,不建議使用列表類型>>>list1=[10,20,30,40,50]#創(chuàng)建列表對象并綁定到變量list1>>>list1[0]=110#修改列表list1的第1個元素(索引位置0)>>>list1.append(60)#在列表list1中添加元素50。結果為:[110,20,30,40,50,60]>>>sum(list1)#使用內置函數(shù)sum返回list1中的元素之和。輸出為:310>>>len(list1)#使用內置函數(shù)len返回list1中的元素個數(shù)。輸出為:6>>>max(list1)#使用內置函數(shù)max返回list1中的最大元素。輸出為:110【例2.34】列表類型示例列表(list)是一組有序項目的數(shù)據(jù)結構列表的定義列表(list)對象是一個對象系列,對象可以是任何類型:數(shù)值、字符串、甚至是其它列表。列表是可變對象[x1,[x2,…,xn]]元組>>>t1=1,2,3#創(chuàng)建包含3個元素的元組對象,并綁定到變量t1>>>t1[2]#返回t1的第3個元素(索引位置2),輸出:3>>>t2=()#創(chuàng)建包含0個元素的元組對象,并綁定到變量t2>>>t3=(1,)#創(chuàng)建包含1個元素的元組對象,并綁定到變量t3>>>t4=(1)#創(chuàng)建一個整數(shù)對象,并綁定到變量t4>>>print(t1,t2,t3,t4)#輸出:(1,2,3)()(1,)1【例2.35】使用元組字面量創(chuàng)建元組實例對象示例一組有序序列,包含0個或多個對象引用元組的定義——x1,[x2,…,xn]]或者(x1,[x2,…,xn])元組也可以通過創(chuàng)建tuple對象來創(chuàng)建tuple()#創(chuàng)建一個空列表tuple(iterable)#創(chuàng)建一個列表,包含的項目為可枚舉對象iterable中的元素注意:如果元組中只有一個項目時,后面的逗號不能省略,這是因為Python解釋器把(1)解釋為1,(1,)解釋為元組字典(映射)鍵必須為可hash對象,因此不可變對象(bool、int、float、complex、str、tuple等)可以作為鍵;值則可以為任意對象。字典中的鍵是唯一的>>>d1={}#創(chuàng)建空字典對象,并綁定到變量d1>>>d2={'baidu':'','bing':'’}#創(chuàng)建字典對象,并綁定到變量d2>>>d2['baidu']#返回字典d2中鍵為'baidu'的值,輸出:''【例2.36】字典對象示例字典(dict,或映射map)是一組鍵/值對的數(shù)據(jù)結構。每個鍵對應于一個值。在字典中,鍵不能重復。根據(jù)鍵可以查詢到值2.8類和對象classPerson:

#定義類PersondefsayHel

溫馨提示

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

評論

0/150