Python程序設計PPT完整版全套教學課件_第1頁
Python程序設計PPT完整版全套教學課件_第2頁
Python程序設計PPT完整版全套教學課件_第3頁
Python程序設計PPT完整版全套教學課件_第4頁
Python程序設計PPT完整版全套教學課件_第5頁
已閱讀5頁,還剩398頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

《Python程序設計》

第1章Python語言概述第1章Python語言概述.pptx第2章Python程序設計基礎.pptx第3章基本數據類型與表達式.pptx第4章程序的基本控制結構.pptx第5章組合數據類型.pptx第6章函數.pptx第7章文件操作.pptx第8章面向對象程序設計.pptx第9章錯誤和異常處理.pptx第11章網絡爬蟲入門與應用.pptx第12章圖形用戶界面設計.pptx全套PPT課件1本章學習要求:理解程序設計的基本概念了解Python語言的特點和應用領域掌握Python開發環境的搭建掌握Python程序的運行方式掌握使用IDLE編寫和執行Python源文件程序了解在線幫助和相關資源1.1計算機程序設計概述1.1.1程序與程序設計語言1.程序

什么是程序?廣義地講,程序就是為完成某一任務而制定的一組操作步驟。按該操作步驟執行,就完成程序所規定的任務。2.程序設計語言

人和計算機交流信息使用的語言稱為計算機語言或稱程序設計語言21.1.1程序與程序設計語言(1)機器語言(MachineLanguage)

(2)匯編語言(AssembleLanguage)

匯編語言程序的執行過程

匯編語言和機器語言都是面向機器的程序設計語言,一般稱為低級語言。

31.1.1程序設計語言的發展(3)高級語言(HighLevelLanguage)

高級語言是一種與硬件結構及指令系統無關,表達方式比較接近自然語言和數學表達式的一種計算機程序設計語言。

優點:描述問題能力強,通用性、可讀性、可維護性都較好

缺點:執行速度較慢,編制訪問硬件資源的系統軟件較難。

用高級語言編寫的程序稱為“源程序”,計算機不能直接識別和執行,高級語言程序有編譯和解釋兩種執行方式。4高級語言程序的編譯執行:

是將源程序整個編譯成等價的,獨立的目標程序,然后通過鏈接程序將目標程序鏈接成可執行程序。高級語言編譯執行過程

5高級語言程序的解釋執行:

解釋方式是將源程序逐句翻譯,翻譯一句執行一句,邊翻譯邊執行,不產生目標程序。整個執行過程,解釋程序都一直在內存中。高級語言解釋執行過程

61.1.2程序設計方法概述程序設計方法的發展可以劃分以下三個階段:1.早期的程序設計2.結構化程序設計3.面向對象的程序設計71.2

Python簡介Python語言是一種功能強大的跨平臺面向對象的程序設計語言,是目前應用最為廣泛的計算機語言之一,具有簡單易學、面象對象、跨平臺、交互解釋、模塊庫豐富、應用廣泛等特點,擁有大量的第三方庫,可以高效地開發各種應用程序。81.2.1Python語言的發展1989年荷蘭人GuidovanRossumPython2.xPython3.x91.2.2Python語言的特點(1)簡單,所以易學。(2)通用編程語言。(3)Python是解釋型語言。(4)開源,擁有眾多的開發群體。(5)良好的跨平臺性和可移植性。(6)面向對象。(7)Python是強類型語言。(8)可擴展性和豐富的第三方庫。101.2.3Python語言的應用方向(1)常規軟件開發(2)WEB開發(3)科學運算(4)數據分析(5)人工智能(6)GUI編程(7)網絡爬蟲(8)云計算(9)系統運維111.3Python開發環境Python是跨平臺的,可以運行于Windows、Mac和各種UNIX系統。Python開發環境除了官方安裝包自帶的IDLE,還有Anaconda、PyCharm、Eclipse+Pydev插件、VisualStudio+PythonToolsforVisualStudio、PythonWin等。121.3.1下載Python安裝程序https://www.python.org/downloads/131.3.2安裝Python(1)雙擊python-3.7.2-amd64.exe(2)選中“AddPython3.7toPATH”復選框,將Python的可執行文件路徑添加到Windows操作系統的環境變量path中,現在“InstallNow”開始安裝。如圖1-4所示。(3)單擊“Close”按鈕,

完成安裝。141.3.3安裝和管理Python的第三方庫math庫、random庫、datatime等Python的標準庫,用戶可以隨時使用。第三方庫(擴展庫)需要安裝后才能使用。用戶下載第三方庫后,可以根據軟件文檔來安裝或使1、用pip工具安裝。使用pip工具安裝

示例:安裝NumPy包:pyhon–mpipinstallNumPy152、可以在PyPI頁面搜索和安裝Python第三方庫(模塊)

163、Python常見的第三方庫171.4運行Python程序1.4.1Python程序的運行原理和運行方式1.運行原理182.運行方式(1)交互模式。在程序功能簡單、代碼較少的情況下,可以使用交互模式開發Python程序。(2)腳本模式。具有復雜功能的Python代碼量較大,一般采用可以使用腳本模式運行。可以使用Python自帶的開發工具開發Python程序,有兩種方式:(1)Windows命令行方式;(2)IDLE方式。191.4.2Windows命令行方式1.交互模式編程2.腳本模式編程201.4.3IDLE方式1.交互模式編程211.交互模式編程222.腳本模式編程(1)新建(2)編輯#lt1-5-welcome.py#第1行為注釋。以符號#開始,到行尾結束str="歡迎來到Python世界!"print("str",str)(3)保存(4)運行23【例1-6】運行程序lt1-6-datas.py#lt1-10-datas.pydatas=(23,2,-32.3,3,90,2.0)print(max(datas))print(min(datas))241.5在線幫助和相關資源Python官網:/Python擴展庫索引:/251.5.1Python交互式幫助系統直接鍵入help()函數可進入交互式幫助系統鍵入help(object)可獲取關于object對象的幫助信息261.5.2Python文檔選擇“開始”→“所有程序”→Python3.7→Python3.7Manuals(64-bit),就可以打開Python文檔。27通過本章的學習,讀者應對計算機語言及程序設計的概念、Python語言程序的組成特點、Python語言程序的運行過程有一個初步了解。Python程序有交互方式和文件方式兩種執行方式。典型的程序設計模式是IPO模式。28本章小結2929本章小結

程序設計是一門實踐性很強的課程,學習Python語言程序設計的一個重要環節就是要既動手又動腦地做實驗。

初學程序設計的一般規律是:先模仿,在模仿的基礎上改進,在改進的基礎上提高;做到善于思考,邊學邊練。

學習程序設計好的方法就是在掌握語法規則的基礎上,多分析閱讀別人寫的程序,多自己動手編寫一些小程序,多上機調試運行程序,做到這3個“多”字,學習好程序設計就不難了。

3030本章作業二、判斷題三、填空題四、選擇題五、編程題《Python程序設計》

第2章Python程序設計基礎3232本章學習要求:熟悉Python程序編寫方法了解Python對象和引用掌握標識符及其命名規則掌握變量和賦值語句了解Python的編碼規范掌握基本輸入輸出的方法了解turtle模塊的基本用法2.1Python程序概述2.1.1引例首先,看一個例子。【例2-1】已知三角形的三條邊,求三角形的面積。提示:假設三條邊長分別為a、b和c,則三角形的面積

其中x為三角形周長的一半

。33程序:#lt2-1-area.pyimportmatha=3.0b=4.0c=5.0x=(a+b+c)/2

#x為三角形周長的一半s=math.sqrt(x*(x-a)*(x-b)*(x-c))

#s為三角形的面積print(s)342.1.2Python程序的構成(1)Python程序由模塊組成,模塊對應擴展名為.py的源文件。一個Python程序一個或多個模塊組成。例2-1程序由模塊lt2-1-area.py和內置模塊math組成。(2)模塊由語句組成。在例2-1程序中,語句importmath是導入模塊語句,print(s)是調用函數語句,其余的是賦值語句。(3)語句是Python程序的過程構造塊,用于創建對象、變量賦值、調用函數、控制分支、構建循環、注釋等。語句包含表達式。“#”引導注釋語句。(4)表達式用于創建和處理對象。如表達式x*(x-a)*(x-b)*(x-c)的運算結果為一個新的float對象。352.2Python對象和引用2.2.1Python對象概述(1)標識(identity)用于唯一標識一個對象,通常對應于對象在計算機內存中的位置。使用內置函數id(obj)可返回對象obj的標識(2)類型(type)用于表示對象所屬的數據類型(類),數據類型(類)用于限定對象的取值范圍,以及允許執行的處理操作。使用內置函數type(obj)可以返回對象obj所屬的數據類型(3)值(value)用于表示對象的數據類型的值。使用內置函數print(obj)可返回對象obj的值36【例2-2】使用內置函數type()、id()和print()查看對象。>>>123

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

#輸出:8791315313296>>>type(123) #輸出:<class‘int’>>>>print(123) #輸出:123372.2.2Python常用內置對象382.2.3數據類型1.基本數據類型與復合數據類型基本數據類型也稱為簡單數據類型,這些類型的數據是不能再分解的。Python中的基本數據類型包括整型、浮點型、布爾類型等,這類數據具有明確的數據范圍和相應的運算模式(詳見第3章)。在這些數據類型的基礎上,可以創建其他的數據類型(又稱為復合數據類型),例如列表、元組、集合、字典等,均是由若干元素合成的(詳見第5章)。392.不可變數據類型與可變數據類型不可變數據類型是不允許元素的值發生變化的,不可變數據類型包括字符串型、元組等。可變數據類型則會允許元素的值發生變化,即若對此類變量進行像append、+、+=等修改操作,系統均會正常運行。可變數據類型包括整型、浮點型、布爾類型、列表和字典;402.2.4變量和對象的引用Python對象是位于計算機內存中的一個內存數據塊。為了引用對象,必須通過賦值語句,把對象賦值給變量通過標識符和賦值運算符(=),可以指定某個變量指向某個對象,即引用該對象。>>>a=1#變量a的值為1>>>b=2#變量b的值為2>>>c=a+b412.3標識符及其命名規則在Python語言中,包、模塊、類、函數、變量等的名稱等必須為有效的標識符。422.3.1標識符可以包含英為文字母(A-Z、a-z)、數字(0-9)及下畫線符號(_)。在自定義標識符時,有以下幾個方面的限制:(1)標識符的第1個字符必須是字母表中的字母或下畫線(_),并且變量名稱之間不能有空格。(2)在命名時,應盡量做到見名知意,以提高程序的可讀性。例如,用salary和pay表示工資。(3)Python的標識符有大小寫之分,如Data與data是不同的標識符。(4)保留字不可以當作標識符。保留字也叫關鍵字,不能把它們用作任何標識符名稱。例如:if、for、in等。(5)避免使用預定義標識符作為自定義標識符,例如:int、float、list、tuple等。(6)以雙下劃線開始和結束的名稱通常具有特殊的含義。例如,__init__為類的構造函數,一般應避免使用。432.3.2保留關鍵字使用Python的help()內置函數可以查看內置函數,如help(input)。442.3.3Python預定義標識符Python語言包含許多內置的類名、對象名、異常名、函數名、方法名、模塊名、包名等的預定義名稱,例如,float、math、ArithmeticError、print等。用戶應該避免使用Python預定義標識符名作為自定義標識符名提示:使用Python的內置函數dir(__builtins__),可以查看所有內置的異常名、函數名等452.3.4命名規則使用統一的標識符命名規則,例如使用著名的SmallTalk法則。在命名時,應盡量做到見名知意,以提高程序的可讀性。例如,用salary和pay表示工資是比較合理的。462.4變量和賦值語句變量(Variable)是用來標識對象或引用對象的。1.變量的聲明和賦值在Python解釋器內可以直接聲明變量的名稱,不必聲明變量的類型,Python會自動判別變量的類型。例如,聲明一個變量x,其值為100:

>>>x=100>>>x100472.鏈式賦值語句鏈式賦值用于為多個變量賦值同一個值【例2-3】鏈式賦值語句示例Python允許用戶同時為多個變量賦值。例如:>>>a=b=c=100 #三個變量的值都為100>>>print(a,b,c)100100100483.復合賦值語句在賦值符“=”之前加上其他雙目運算符可構成復合賦值符。如:+=、-=、*=、/=、%=、**=、//=。復合賦值符優先級、結合性與賦值符相同。構成復合賦值表達式的一般形式為:

變量

雙目運算符=表達式

例如,a+=5 等價于a=a+5x*=y+7 等價于x=x*(y+7)而不等價于:x=x*y+7r%=p 等價于r=r%p494.系列解包賦值將系列數據類型解包為對應相同個數的變量a,b,c=1,2,"john"

#分別為三個變量賦值【例2-4】使用系列解包實現變量交換>>>a,b=(1,2)#變量a,b>>>a,b=b,a #a,b交換>>>a #輸出:2>>>b #輸出:1502.3.2常量Python常量包括數字、字符串、布爾值、空值,例如:20193.14“ZUST”TRUE通常使用全大寫字母(可以使用下劃線增加可閱讀性)表示常量名。在編程過程中,經常將一些關鍵的數據設置成常量,這樣做可以提高程序的可讀性,而且對程序設計的擴充與修改也是十分方便的。512.5表達式和運算符2.5.1表達式的組成表達式由操作數和運算符組成,操作數、運算符和圓括號按一定規則組成表達式。【例2-5】表達式示例>>>importmath>>>a=2

;b=3>>>a+b>>>math.pimath.sin(math.pi/2)522.4.2表達式的書寫規則表達式從左到右書寫。例如,數學公式a2+b2應該寫為:a**2+b**2。②乘號不能省略,例如,數學公式ab(表示a乘以b)應寫為:a*b。③圓括號可用于修改表達式計算順序或者增加代碼可讀性避免歧義。圓括號必須成對出現,可以嵌套使用。例如,并聯電阻的計算公式

對應的表達式是R1*R2/(R1+R2)。532.4.3運算符運算符包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位運算符、成員運算符和身份運算符。提示:在第3章作詳細介紹。注意:Python運算符及其優先級。542.6語句2.6.1Python語句語句是Python程序的過程構造塊,用于定義函數、定義類、創建對象、變量賦值、調用函數、控制分支、創建循環等Python語句分為:(1)簡單語句包括:表達式語句、賦值語句、assert語句、pass空語句、del語句、return語句、yield語句、raise語句、break語句、continue語句、import語句、global語句、nonlocal語句等(2)復合語句包括:if語句、while語句、for語句、try語句、with語句、函數定義、類定義等552.6.2Python語句的書寫規則(1)Python中的縮進要求非常嚴格,必須嚴格對齊。因為Python的代碼塊不由{}控制,而是由縮進就可以控制。復合語句構造體必須縮進。(2)使用換行符分隔,一般情況下,一行一條語句。(3)反斜杠(\)用于一個代碼跨越多行的情況。如果語句確實太長而超過屏幕寬度,最好在行尾使用續行符“\”表示下一行代碼仍屬于本條語句,或者使用圓括號把多行代碼括起來表示是一條語句。(4)分號(;)用于在一行書寫多條語句。(5)適當使用空行分隔語句塊、函數、類、模塊等對象。562.6.3復合語句復合語句(條件語句、循環語句、函數定義和類定義,例如if、for、while、def、class等)由頭部語句(headerline)和構造體語句塊(suites)組成。復合語句及其縮進書寫規則:(1)頭部語句由相應的關鍵字(例如,if)開始,構造體語句塊則為下一行開始的一行或多行縮進代碼。(2)通常縮進是相對頭部語句縮進四個空格,也可以是任意空格,但同一構造體代碼塊的多條語句縮進的空格數必須一致對齊。如果語句不縮進,或縮進不一致,將導致編譯錯誤。(3)如果條件語句、循環語句、函數定義和類定義比較短,可以放在同一行。572.6.4注釋語句Python中的注釋有單行注釋和多行注釋。單行注釋以#開頭,,到行末結束。多行注釋用3個單引號(''')或3個雙引號(""")將注釋括起來。Python解釋器將忽略所有的注釋語句,注釋語句不會影響程序的執行結果。582.7輸入輸出函數程序運行時序通常都是輸入數據、進行計算和輸出結果,這就是簡單程序的形式。Python的內置函數input()和print()用于輸入和輸出數據。592.7.1輸出函數print()1.使用print()函數輸出print()函數的基本語法格式如下:print(value,…,sep='',end='\n')示例:>>>print(123,'abc',45,'book',sep='-')123-abc-45-book>>>print('100+200=',100+200)100+200=300602.使用格式符%對字符串格式化print()函數格式化輸出的一般格式:print(”格式化字符串”%(變量、常量或表達式))其中,格式化字符串中包含一個或多個指定格式參數,與后面括號中的變量、常量或表達式在個數和類型上一一對應。

當有多個變量、常量或表達式時,中間用逗號隔開。61print()函數格式符合及含義62【例2-6】使用print()函數格式化輸出數據。程序代碼及運行結果。>>>print('100+200=%d'%(100+200))100+200=300>>>x=100>>>y=1.23>>>print("x=%d,y=%f"%(x,y)x=100,y=1.23632.7.2輸入函數input()Python提供的input()函數從標準輸入讀入一行文本,默認的標準輸入是鍵盤。input()函數的基本語法格式如下:變量=input([prompt])【例2-7】測試鍵盤的輸入。>>>x=input("請輸入最喜歡的水果:")請輸入最喜歡的水果:葡萄>>>x'葡萄'64【例2-8】計算矩形面積。源程序如下:#lt2-8-area.pya=int(input("矩形長度:\t"))#輸入矩形長度b=int(input("矩形寬度:\t"))#輸入矩形寬度area=a*b#計算矩形面積print("矩形面積:\t",area)#輸出結果652.7.3eval()函數eval()函數可以接收一個字符串,以Python表達式的方式解析與執行該字符串,并將執行結果返回。該函數的語法格式為:eval(<字符串>)【例2-9】輸入三角形三條邊,用海倫公式計算三角形的面積。#lt2-9-area.py#輸入三角形三條邊,有海倫公式計算三角形面積simportmatha=eval(input("請輸入a邊長:"))b=eval(input("請輸入b邊長:"))c=eval(input("請輸入c邊長:"))p=(a+b+c)/2s=math.sqrt(p*(p-a)*(p-b)*(p-c))print("三角形的面積是{:.2f}".format(s))662.8Python中的函數和模塊函數是可以重復調用的代碼塊。Python語言中包括許多內置的函數,例如print()、max()等,用戶也可以自定義函數。有關自定義函數請參見第6章。672.8.1函數1.內置函數Python語言中包含若干常用的內置函數,如dir()、type()、id()、help()、len()等,用戶可以直接使用。示例:>>>s="WelcometoHangzhou!">>>len(s)#返回字符串s的長度,輸出:2020>>>round(5.79)6

提示:可以用dir(__builtins__)命令查看Python的全部內置函數。682.模塊函數通過import語句,可以導入模塊module,然后使用module.function(arguments)的形式調用模塊中的函數3.函數APIPython語言提供了海量的內置函數、標準庫函數、第三方模塊函數,函數的調用方法由應用程序編程接口(API)確定。69Python常用函數API702.8.2模塊模塊是包含變量、語句、函數或類的定義的程序文件,文件的名字就是模塊名加上.py擴展名。功能相近的模塊可以組織成包,包是模塊的層次性組織結構。Python中使用import導入模塊或模塊對象,有以下幾種方式。(1)導入整個模塊。格式為:import模塊名[as別名]。(2)導入模塊的單個對象。格式為:from模塊名import對象[as別名]。

(3)導入模塊的多個對象。格式為:from模塊名import對象1,對象2,…。(4)導入模塊的全部對象。格式為:from模塊名import*。

說明:這幾種方式導入模塊后,使用模塊中對象的形式有所不同。71【例2-10】模塊的導入及使用。程序代碼及運行結果:>>>importmath #math是Python內置模塊>>>math.fmod(10,3) #求余數1.0>>>importmath asm #別名為m>>>m.pow(2,4 )16.0>>>frommathimportfabs,sqrt #導入模塊中的函數>>>fabs(-100)100.0>>>sqrt(9) #返回3.072【例2-11】模塊和包示例:求解一元二次方程ax2+bx+c=0。源程序如下:#lt2-11-module.pyimportmath#導入標準看模塊matha=float(input("請輸入a:"))b=float(input("請輸入b:"))c=float(input("請輸入c:"))#a=3;b=8;c=5x1=(-b+math.sqrt(b*b-4*a*c))/(2*a)#使用模塊math中的函數sqrt求解平方根x2=(-b-math.sqrt(b*b-4*a*c))/(2*a)print('方程a*x*x+b*x+c=0的解為:',x1,x2)732.9turtle繪圖turtle(海龜)庫是Python語言中一個很流行的繪制圖形的函數庫,用于繪制線、圓及其他形狀。turtle繪圖可以描述為海龜爬行軌跡形成了繪制的圖形,圖形繪制的過程十分直觀。turtle庫保存在Python安裝目錄的Lib文件夾下,需要導入后才能使用。742.9.1turtle簡介海龜有三個屬性,位置、方向、畫筆(顏色、寬度等)。(1)位置屬性:整個畫板其實就對應一個中學所學的“平面直角坐標系”,畫板的正中心為坐標系的原點(0,0)即x=0,y=0。在turtle里,reset(),海龜回到原點坐標。(2)方向屬性:海龜可以360度的旋轉,使用的函數為:left(angle),right(angle),分別為向左、向右轉angle度。(3)畫筆屬性:通過改變畫筆的屬性,海龜可以畫出不同顏色,不同粗細的圖案。這些函數包括,pencolor(args),可以改變畫筆的顏色,args可以是'red','blue'等字符串;width(w),可以改變畫筆的粗細,w為一個正數。up(),即提起畫筆,暫時不畫圖像,對應的down()為放下畫筆,開始繪圖。751.創建窗口圖形窗口也稱為畫布(canas)。

需要先使用setp()函數創建圖形窗口。turtle.setup(width,height,startx,starty)setup()函數中的4個參數表示窗口寬度、高度、窗口在計算機屏幕上的橫坐標和的縱坐標。762.turtle的畫筆控制方法設置畫筆的狀態,包括畫筆的抬起和落下狀態;設置畫筆的寬度、顏色等。773.turtle的圖形繪制方法turle圖形繪制是通過控制畫筆的行進動作完成的,包括畫筆的前進方法、后退方法、方向控制等。782.9.2turtle繪圖實例【例2-12】用坐標繪制圖2-1所示的五角星。79繪圖程序如下:

#lt2-12-star.pyimportturtle#導入模塊turtle中的全部內容turtle.forward(200)turtle.right(144)turtle.forward(200)turtle.right(144)turtle.forward(200)turtle.right(144)turtle.forward(200)turtle.right(144)turtle.forward(200)turtle.done()80【例2-13】繪制同一個半徑的內接正多邊形81#繪制同一個半徑的內接正多邊形

importturtleimporttime#sleep()函數需要turtle.setup(640,480)turtle.title("繪制同一個半徑的內接正多邊形")t=turtle.Turtle()t.pensize(3)#設置畫筆寬度為3t.pencolor('blue')#設置畫筆顏色為藍色t.penup()#抬起畫筆t.goto(-270,0)#移動位置t.pendown()#放下畫筆foriinrange(3,9):#循環6次,i值依次去3~8t.circle(40,steps=i)#circle()函數可繪制正i邊形,i>=3time.sleep(1)#暫停1s,需引入time模塊t.penup()t.goto(-290+(i-2)*90,0)t.pendown()t.circle(40)#繪制1個圓t.hideturtle()#隱藏畫筆turtle.mainloop()822.10.實例應用【例2-14】列表保存的一組成績數據,統計不及格的人數和最高分。具體程序如下。#lt2-13-max.pylst=[89,45,34,23,98,33]#列表表示notpass=maxscore=0#notpass為不及格人數,maxscore為最高分foriteminlst:ifmaxscore<item:maxscore=itemifitem<60:notpass+=1print("最高分是{},不及數人數是{}".format(maxscore,notpass))83【例2-15】求2個數平方和的平方根。程序設計如下:

#lt2-14-sqrt.pyimportmath

#導入模塊.deffunc(x,y):#定義函數.z=math.sqrt(x**2+y**2)returnzif__name__=="__main__":a=int(input("請輸入一個整數:"))

#定義變量a.b=int(input("請輸入一個整數:"))

#定義變量b.c=func(a,b#調用func()函數,結果賦給變量c.print("c=",c)#輸出.848585本章小結本章學習的Python對象和引用、標識符、變量和賦值語句、表達式和運算符、輸入輸出函數、Python中的庫是Python語言程序設計的基礎。程序的書寫,包括代碼縮進、注釋、語句續行、關鍵字區分大小寫等內容。8686本章作業一、判斷題二、填空題三、選擇題四、程序閱讀題五、編程題《Python程序設計》

第3章基本數據類型與表達式

本章學習要求

掌握三種數值及布爾類型的概念正確使用三種數值類型掌握字符串的概念和表示熟悉基本的運算符結合標準函數進行表達式計算掌握字符串的基本操作和格式化輸出883.1數據和數據類型的概念計算機的數據表示分成數值類、文本類、復合類數據類型程序處理的處理的對象不同,需要區分數據類型各類數據的存儲方式以及運算方式不同每種數據有特定的保留字89數值類型整數類型int十進制:100,-23二進制:0B1101八進制:0o1354十六進制:0x9A8B浮點數類型float-123.65、9.2e-3復數類型complex3.5+2.78j90字符串類型str91以一對單引號、雙引號或三引號作為定界符的字符序列;它最基本的單位就是字符(分可打印和不可打印字符);打印字符包括:英文的大小寫字母A~Z和a~z;數字字符0~9;標點符號和一些常用符號。92轉義字符(用“\”開始)轉義字符描述轉義字符描述\\反斜杠符號\t橫向制表符\’單引號\n換行\”雙引號\(在行尾)續行符\a響鈴\f換頁\b退格\oyy八進制數\r回車\xyy十六進制數布爾類型bool只有True(真)和False(假)兩個值所有類型的數字0(整數類型、浮點類型等其它類型)、空序列(字符串、列表、元組)以及空字典的值為假,其它值為真。93s=bool("Helloworld")t=bool(0)print(s)print(t)

TrueFalse943.3運算符與表達式對數據進行不同運算處理時運用的一些符號,叫運算符。根據參與運算對象的數目,可以分為一元運算符、二元運算符。Python常用的運算符包括

①算術運算符

②關系運算符

③邏輯運算符

④賦值運算符

⑤位運算符

⑥成員運算符

⑦身份運算符

95用運算符和括號將運算對象組合在一起的式子就是表達式。單獨的一個常量或變量都可以視為一個表達式。表達式的運算結果跟所參與的運算、運算的目數和運算的優先級有關。3.3運算符與表達式算術運算符(假設變量a取值2,變量b取值5)96運算符描述舉例-a取反-2a+b相加結果為7a-b相減結果為-3a*b相乘結果為10a/b相除結果為0.4a//b整除結果為0a%b取余結果為2a**b求冪結果為32關系運算符關系運算符是進行兩個對象大小于或相等與否關系比較的運算符,關系成立的運算結果為真,反之為假,運算的值是布爾類型數據:True或False。97運算符描述舉例a>b比較a是否大于ba大于b,返回True,否則返回Falsea>=b比較a是否大于等于ba大于等于b,返回True,否則返回Falsea<b比較a是否小于ba小于b,返回True,否則返回Falsea<=b比較a是否小于等于ba小于等于b,返回True,否則返回Falsea==b比較a是否等于ba等于b,返回True,否則返回Falsea!=b比較a是否不等于ba不等于b,返回True,否則返回False邏輯運算符運算包括:邏輯非not、邏輯與and和邏輯或or運算邏輯運算的結果也只有True和False兩個值。98abaandbaorbnotaTrueFalseFalseTrueFalseFalseTrueFalseTrueTrueFalseFalseFalseFalseTrueTrueTrueTrueTrueFalse賦值運算符用一個“=”表示表示將右邊表達式的結果賦予左邊的變量可以一次只給一個變量賦值,也可以同時給多個變量賦值99>>>x=100#一次賦值一個變量>>>x,y,z=100,200,300#一次賦值多個變量>>>x,y=y,x#x,y兩個數值互換位運算符是針對二進制數按每一位進行運算的符號100按位取反(~)按位與(&)

56 00111000 78 & 01001110 00001000位運算符101按位或(|)

56 00111000 78 | 01001110 01111110按位異或(^)

56 00111000 78 ^ 01001110 01110110位運算符102按位左移(<<) 5<<4

01010000按位右移(>>) 5>>2

00000001

身份運算符103運算符描述舉例aisb判斷a和b是否引自同一個對象如果id(a)和id(b)一致,返回Trueanotisb判斷a和b是否引自不同對象如果id(a)和id(b)不同,返回True>>>x=10>>>y=10>>>print(xisy)>>>y=20>>>print(xisy)TrueFalse類型轉換104自動類型轉換強制類型轉換函數描述函數描述int(x)將x強制轉化成整數ord(x)將x轉化成對應的ASCⅡ值float(x)將x強制轉化成浮點數chr(x)將x轉化成對應的字符str(x)將x強制轉化成字符串eval(x)將字符串x作為表達式計算運算符優先級105運算符描述**冪運算~、+、-按位取反、正、負號*、/、%、//乘、除、取余、整除+、-加、減法>>、<<右移、左移&位與^、|異或、位或<=、<、>=、>大小于比較==、!=是否相等判斷=賦值is、notis身份運算in、notin成員運算not、and、or邏輯運算3.4數值處理常用標準函數106math庫的使用調用格式:先引入math庫: importmath再調用: math.函數名(參數)常用算術運算標準函數107函數名或常數描述舉例math.e自然常數emath.emath.pi圓周率πmath.pimath.log10(x)返回以10為底的對數math.log10(2)math.pow(x,y)返回x的y次方math.pow(4,3)math.sqrt(x)返回x的平方根math.sqrt(5)math.ceil(x)返回不小于x的最小整數math.ceil(4.3)math.floor(x)返回不大于x的最大整數math.floor(5.8)math.trunc(x)返回x的整數部分math.trunc(7.6)math.fabs(x)返回x的絕對值math.fabs(-4.3)math.sin(x)返回x的三角正弦值math.sin(3)math.asinx)返回x的反三角正弦值math.asin(0.5)math.cos(x)返回x的三角余弦值math.cos(1.7)math.acos(x)返回x的反三角余弦值math.acos(0.3)math.tan(x)返回x的三角正切值math.tan(5)math.atan(x)返回x的反三角正切值math.atan(1.6)例3-14108importmathprint(math.pi)print(math.sqrt(2))print(math.acos(0.6))print(math.pow(3,4))print(math.floor(7.4))3.1415926535897931.41421356237309510.927295218001612381.07109random庫的使用調用格式:先引入random庫: importrandom再調用: random.函數名(參數)或者直接調用指定函數: fromrandomimportrandint常用隨機標準函數110函數名描述seed(a)初始化隨機數種子random()生成一個[0.0,1.0]之間的隨機小數randint(a,b)生成一個[a,b]之間的整數getrandbits(k)生成一個k比特長度的隨機整數randrange(start,stop[,step])生成一個[start,stop]之間以step為步長的隨機整數uniform(a,b)生成一個[a,b]之間的隨機小數choice(seq)從序列seq中隨機返回一個元素shuffle(seq)將序列seq中的元素隨機打亂,返回打亂后的序列111例3-15importrandomrandom.seed(15)foriinrange(1,11):print(random.randint(1,100),end=",")print()foriinrange(1,11):print(random.randint(1,100),end=",")print()random.seed(15)foriinrange(1,11):print(random.randint(1,100),end=",")print()print(random.random())foriinrange(1,11):print(random.randrange(1,100,2),end=",")結果:27,2,67,95,5,21,31,3,8,88,19,89,48,31,15,44,60,91,46,36,27,2,67,95,5,21,31,3,8,88,0.1472483564715264589,47,31,15,43,59,91,45,35,51,3.5字符串處理函數及方法112字符串的基本操作操作符描述x+y連接字符串x和yx*n將字符串x復制n次xins若字符串x是字符串s的子串,返回True,否則返回Falsestr[i]索引,返回字符串str中第i個字符str[m:n]切片,返回字符串str中第m個到第n-1個字符的子串113字符串的常用內置處理函數

函數名/方法描述字符串類型判斷str.isalpha()判斷字符串str是否全為字母,是返回True,否返回Falsestr.isdigit()判斷字符串str是否全為數字,是返回True,否返回Falsestr.islower()判斷字符串str是否全為小寫字母,是返回True,否返回Falsestr.isupperr()判斷字符串str是否全為大寫字母,是返回True,否返回False大小寫字母轉換換str.lower()字符串str變小寫字母str.upper()字符串str變大寫字母str.title()字符串str首字母變大寫字母str.swapcase()字符串str中的大小寫字母互換刪除空格str.strip([chars])刪除字符串str左右的空格str.lstrip(([chars])刪除字符串str左邊的空格str.rstrip(([chars])刪除字符串str右邊的空格

str.find(sub[,start[,end]])在字符串str的[start,end]區間中查找sub子串,返回sub首次出現的位置

str.replace(old,new[,count])在字符串str中用new子串替換old子串

str.split()將字符串str拆分成列表

str.count(sub[,start[,end]])統計sub子串在字符串str的[start,end]區間出現的次數114例3-16s="s2345dgfd645"print(s.isdigit())print(s.title())print(s.upper())print(s.strip())print(s.find('45',1,9))print(s.count('45'))print(s.split())執行結果:FalseS2345DGfd645S2345DGFD645s2345dgfd64572['s2','345d','gfd645']115字符串的f-string格式化方法f-string在形式上是以f或F修飾符引領的字符串(f'xxx'或F'xxx'),以大括號{}標明被替換的字段。例如:s="zhangsan"print(f'Mynameis{s}.')顯示結果:Mynameiszhangsan.116字符串的format()格式化方法format()方法的基本格式: <模板字符串>.format(參數)

name="zhangsan"age=10print('Mynameis{}.Myageis{}.'.format(name,age))0011顯示:Mynameiszhangsan.Myageis10.117format()方法的格式控制{<參數序號>

:<格式控制符>}:<填充><對齊><寬度><,><.精度><類型>引導符單個字符<左對齊>右對齊^居中對齊設定輸出寬度數字的千位分隔符用于整數和浮點數浮點數小數部分的精度或字符串的輸出長度整數類:b,c,d,o,x,X浮點類:e,E,f,%<填充>部分的字符是指當輸出值不到設定的寬度時填充空位的字符,若沒有指定,默認由空格填充空位。<對齊>輸出值可以設定靠左、靠右和居中三種不同對齊方式。<寬度>對輸出值可以指定顯示的寬度,實際數值不到指定寬度時將出現空位,根據設定的對齊方式,空位出現的位置將會不同:左對齊方式:空位出現在數值的右側;右對齊方式:空位出現在數值的左側;居中對齊方式:空位出現在數值的兩側。<.精度>浮點數輸出時可以進行小數點后保留幾位的控制,系統會自動截取小數部分。<類型>當輸出整數或浮點數時,根據需要可以有不同進制的選擇,由不同的格式控制符決定。118name="shen"a=12345.2356print('{:-<10},{:>10,.2f}'.format(name,a))結果:shen------,12,345.24《Python程序設計》

第4章程序的基本控制結構

本章學習要求

了解算法的概念以及算法的流程圖表示掌握順序結構掌握選擇結構,能針對不同情況選擇不同的分支語句處理問題掌握循環結構,熟練使用while和for語句能區分break、continue語句的不同,在編程中正確使用優化設計方案1204.1算法及算法表示描述程序解決問題的方法步驟就是算法算法的特征有窮性:算法必須在執行有限步驟后終止確定性:算法給出的每個計算步驟必須有明確定義,無二義性有效性:算法中的每個步驟都能有效執行,得到確定結果有零個或多個輸入:算法處理的數據可以源于輸入的數據有一個或多個輸出:算法應有輸出,執行結果就是算法的輸出1214.1算法及算法表示評價算法優劣標準正確性:指算法能否正確求解相應的問題時間復雜度:指計算機執行程序時花費的時間量空間復雜度:指計算機上運行程序需要消耗內存的大小可理解度:指算法是否便于人們閱讀、理解122算法的表示流程圖是算法表示常用的方法。它用一些圖形框圖、流程線和簡單的文字說明描述程序的基本操作和算法實現過程。常用的流程圖符號:

起止框:表示程序的開始和結束;

處理框:表示程序的處理步驟;

判斷框:根據不同的判斷結果執行不同的操作;

輸入輸出框:表示數據的輸入輸出;

流程線:表示程序執行路徑。1234.2順序結構124順序結構就是按照從上往下的順序依次執行程序中的語句。【例4-1】輸入半徑值計算對應的圓面積125importmathr=float(input("請輸入半徑:"))s=math.pi*r*rprint("s={:.2f}".format(s))執行結果:請輸入半徑:3s=28.274.3選擇結構126指通過判斷特定條件是否滿足來決定程序的執行流程分成單分支選擇結構、雙分支選擇結構和多分枝選擇結構三種基本結構單分支選擇結構

是選擇結構中較簡單的一種判斷執行127格式如下: if

條件:

語句塊當條件滿足時,執行語句塊;若條件不滿足,語句塊被跳過不執行【例4-2】128x=input('請輸入兩個數字a,b:')a,b=map(int,x.split())ifa>=b:print('{}比較大'.format(a))執行結果:輸入7812輸出:78比較大雙分支選擇結構

是用來處理滿足條件與否的兩種截然不同的執行129格式如下:

if條件:

語句塊1 else:

語句塊2表示條件滿足時,執行語句塊1;條件不滿足時,執行語句塊2【例4-3】130x=input('請輸入兩個數字a,b:')a,b=map(int,x.split())ifa>=b:max=aelse:max=bprint('{}比較大'.format(max))執行結果:輸入1278輸出:78比較大條件表達式條件表達式格式如下:

值1if條件else值2131例4-3的雙分支語句可以改寫成如下的條件表達式: max=(aifa>=belseb)多分支選擇結構

是針對兩種以上不同情況的復雜處理132if條件1:

滿足條件1執行的語句塊1elif條件2:

滿足條件2執行的語句塊2elif條件3:

滿足條件3執行的語句塊3

…else:

以上N-1個條件都不滿足時執行的語句塊N133【例4-4】將輸入百分制的成績轉換成五分制等級134x=int(input('請輸入成績:'))ifx>100:print('wrongscore<=100')elifx>=90:print('A')elifx>=80:print('B')elifx>=70:print('C')elifx>=60:print('D')elifx>=0:print('E')else:print('wrongscore>=0'選擇結構的嵌套進行分層處理在一個if語句中可以嵌套別的if或者if-else語句,達到根據復雜條件進行篩選處理的效果不同層次的分句縮進量不同相同層次的語句縮進量相同135選擇結構的嵌套136格式如下:if條件1:

語句塊1 if條件2:

語句塊2 else:

語句塊3 else:

語句塊4【例4-6】編程求解一元二次ax2+bx+c=0。137分析:首先根據輸入a的數值,區分當前輸入的系數能否構成一元二次方程:1.a=0時顯示輸入的系數構成的“不是一元二次方程”。2.若a≠0,需要對是否實根還是虛根的情況篩選:(1)b2+4ac>=0,有兩個實根;(2)b2+4ac<0,有兩個虛根。138代碼如下:importmathx=input('Enternumbera,b,c=')a,b,c=map(float,x.split())ifmath.fabs(a)>1e-5:d=b**2-4*a*cifd>=0:x1=(-b+math.sqrt(d))/(2*a)x2=(-b+math.sqrt(d))/(2*a)print("x1={:.2f},x2={:.2f}\n".format(x1,x2))else:x1=-b/(2*a)x2=math.sqrt(math.fabs(d))/(2*a)print('x1={:.2f}+{:.2f}i\n'.format(x1,x2))print('x1={:.2f}-{:.2f}i\n'.format(x1,x2))else:print('不是一元二次方程')4.4循環結構139解決需要重復執行多次的操作由循環條件和循環體兩部分組成每次循環都是先進行條件判斷,滿足條件才能進行一次循環,一旦循環條件不滿足時就結束循環Python提供了whili和for兩種循環語句

while語句140格式如下:

while條件:

循環體或者 while條件:

循環體

else:

語句塊

采用循環結構時需要考慮設置一定條件來完成重復操作的簡稱條件循環141【例4-7】求兩個整數的最大公約數x=input('請輸入兩個數字a,b:')a,b=map(int,x.split())x,y=a,bifx<y:x,y=y,xr=x%ywhiler!=0:x,y=y,rr=x%yprint("{}和{}的最大公約數是{}".format(a,b,y))程序運行結果:請輸入兩個數字a,b:364536和45的最大公約數是9

for語句142格式如下:

for循環變量in循環變量需要遍歷的序列:

循環體或者

for循環變量in循環變量需要遍歷的序列:

循環體

else:

語句塊

在使用循環結構時,如果事先明確循環次數或者清楚所要遍歷的每種情況,我們就用for語句【例4-8】求1+2+3+4+…+100143s=0foriinrange(1,101):s=s+iprint(s)結果:5050循環的嵌套結構144在一個循環里嵌套了另一個循環執行過程:里層從開始到結束的整個循環對應外層的一次循環遍歷外層的m次循環和內層n次循環,內層的執行語句要重復m*n次可以是while語句和for語句各自或相互的嵌套

例4-10打印輸出如下格式的九九乘法口訣表1451*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=9 2*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=18

3*3=93*4=123*5=153*6=183*7=213*8=243*9=27

4*4=164*5=204*6=244*7=284*8=324*9=36

5*5=255*6=305*7=355*8=405*9=45

6*6=366*7=426*8=486*9=54

7*7=497*8=567*9=63

8*8=648*9=729*9=81146分析:外層:行的輸出(一行的操作重復九次)內層:列的輸出:空格的輸出(數量與所在行有關)算式的輸出(數量與所在行有關)換行

foriinrange(1,10):forjinrange(1,i):print(''*8,end='')forjinrange(i,10):print('{}*{}={:<4}'.format(i,j,i*j),end='')print('\n')代碼如下:break和continue語句147用于特定條件下提前結束某個或者某次循環break語句用于結束某一層循環continue語句用于結束某一次循環148【例4-11】判定某個整數m是否素數k=sqrt(m);i為2~k之間的整數;依次讓m對i整除一遍,若有一個i被m整除,則排除m是素數,中斷整除遍歷;循環正常結束,表示沒有一個i被m整除,確定m為素數。149代碼如下:importmathx=int(input())k=int(math.sqrt(x))foriinrange(2,k+2):ifx%i==0:breakifi<=k:print('{}不是素數'.format(x))else:print('{}是素數'.format(x))執行結果:5656不是素數3737是素數1504.5典型應用程序雞兔同籠問題【例4-12】假設共有雞和兔40只,腳100只,問雞和兔各多少只。forjiinrange(1,41):if2*ji+(40-ji)*4==100:print('雞:{},兔:{}'.format(ji,40-ji))執行結果:雞:30,兔:10.151利用格里高利公式求π的近似值格里高利公式:分析:公式的變化規律是每次累加項的絕對值在越變越小,結合精度的要求,我們在累加項的絕對值一旦小于10-6時停止累加,累加問題可以用循環結構解決,至于每次累加項的變號問題在循環中也可以方便地實現。因為循環次數的不確定,所以考慮用while語句。152代碼如下:importmathsign=1pi=0n=1t=1whilemath.fabs(t)>=1e-6:t=sign/npi=pi+tn=n+2sign=-signprint('pi={}'.format(pi*4))153排序算法要求對輸入的若干字符串進行從小到大排序選擇算法分析:有n個長短、內容不同的字符串.(放在列表中),經過n-1輪找相對最小的字符串,可實現將n個字符串按升序排列。每一輪都是通過比較找到當前輪的最小字符串,然后交換到這一輪的最前位置上。第一輪所有n個字符串參與比較,第二輪剔除已經排在第一位的最小字符串,在剩余的n-1個字符串中找最小值,找到后交換到第二個位置,再開始下一輪操作,以此類推,參與比較的字符串越來越少,最終只剩下一個字符串時,意味著排序結束。154fshh

溫馨提示

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

最新文檔

評論

0/150

提交評論