Python程序設計語言(第二版)(微課版)課件 李美珊 01-06 計算機基礎與Python概述 - 函數_第1頁
Python程序設計語言(第二版)(微課版)課件 李美珊 01-06 計算機基礎與Python概述 - 函數_第2頁
Python程序設計語言(第二版)(微課版)課件 李美珊 01-06 計算機基礎與Python概述 - 函數_第3頁
Python程序設計語言(第二版)(微課版)課件 李美珊 01-06 計算機基礎與Python概述 - 函數_第4頁
Python程序設計語言(第二版)(微課版)課件 李美珊 01-06 計算機基礎與Python概述 - 函數_第5頁
已閱讀5頁,還剩295頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第一章計算機基礎和Python概述學習目標了解計算機系統及程序設計語言了解Python語言的發展及現狀、特點和應用領域掌握Python運行環境的安裝與配置、編碼規范、庫的使用目錄計算機基礎概述程序設計語言Python語言簡介重Python環境的安裝與配置重1234Python編碼規范5重難難6第三方庫的安裝(pip工具)擴展庫的導入與使用7難重重知識導圖為什么我們需要計算機?認識自然、分析自然規律,量化計算。引言Introduction為什么我們需要計算機?人類資源分配、人類活動管理,優化計算。引言Introduction為什么我們需要計算機?數學、邏輯、哲學,推理演算。引言Introduction為什么我們需要計算機?網絡更是提供了人類多維度的溝通和更多的生活、工作模式。引言Introduction1.1計算機系統概述硬件系統主機外部設備CPU內存儲器外存儲器輸入設備輸出設備運算器控制器存儲器系統軟件應用軟件計算機系統軟件系統計算機系統1.1.1馮·諾依曼結構馮·諾依曼(JohnVonNeumann,1903~1957)

美籍匈牙利數學家。馮·諾伊曼對計算機的主要貢獻:提出了以二進制和存儲程序工作原理為基礎的現代計算機的體系結構。它的特點:1)計算機由五大基本部件:控制器、運算器、存儲器、輸入設備、輸出設備;2)采用二進制數表示指令和數據;3)將程序和數據存放在計算機的內存中,并讓計算機自動執行;4)機器以運算器為核心,輸入輸出設備與存儲器的數據傳送通過運算器。控制器負責整個計算處理的流程控制運算器負責主要負責數據的計算和邏輯判斷存儲器負責存放了需要處理的數據及指令存儲程序和程序的自動執行1.1.2計算機硬件系統

計算機硬件系統是組成計算機系統的各種物理設備的總稱,是計算機系統的物質基礎,是看得見、摸得著的一些實實在在的有形實體。1.存儲器

存儲器分為主存儲器和輔助存儲器。主存可直接與CPU交換信息,輔存又叫外存。2.運算器

運算器是計算機中處理數據的核心部件,主要由執行算術運算和邏輯運算的算術邏輯單元ALU(ArithmeticLogicUnit)、存放操作數和中間結果的寄存器組以及連接各部件的數據通路組成,用以完成各種算術運算和邏輯運算。3.控制器

控制器是計算機中控制管理的核心部件。CPU和主存儲器是信息加工處理的主要部件,通常把這兩個部分合稱為主機。4.輸入輸出設備

輸入/輸出設備(簡稱I/O設備)又稱為外部設備,它是與計算機主機進行信息交換,實現人機交互的硬件環境。1.1.3計算機軟件系統

軟件包括可在計算機上運行的各種程序、數據及其有關文檔。通常把計算機軟件系統分為系統軟件和應用軟件兩大類。1.系統軟件

系統軟件是維持計算機系統的正常運行,支持用戶應用軟件運行的基礎軟件,包括操作系統、語言處理程序和數據庫管理系統等。2.應用軟件

應用軟件也稱為應用程序,是專業軟件公司針對應用領域的需求,為解決某些實際問題而研制開發的程序,或由用戶根據需要編制的各種實用程序。應用程序通常需要系統軟件的支持,才能在計算機硬件上有效運行。例如,文字處理軟件、電子表格軟件、制圖軟件、網頁制作軟件、財務管理軟件等均屬于應用軟件。1.2程序設計語言程序設計語言:是計算機能夠理解和識別用戶操作意圖的一種交互體系;它按照特定規則組織計算機指令,使計算機能夠自動進行各種運算處理。計算機程序按照程序設計語言規則組織起來的一組計算機指令。1.2程序設計語言機器語言直接使用二進制代碼表達指令,計算機硬件可以直接識別和執行。匯編語言使用助記符與機器語言中的指令進行一一對應,在計算機發展早期幫助程序員提高編程效率高級語言接近自然語言的一種計算機程序設計語言,更容易地描述計算問題并利用計算機解決計算問題。低級語言8086CPU指令系統機器語言和匯編語言PUSHBPMOVEBP,SPDECSPPUSHSIPUSHDIMOVEDI,0005MOVESI,0003MOVEAX,DIADDAX,SI010101011000101111101100010011000101011001010111101111110000010100000000101111100000001100000000100010111100011111000110求:5+3Pascalvari,j,k:integer;begini:=5;j:=3;k:=i+j;end高級語言:求5+3的值Cintmain(){inti,j,k;i=5;j=3;k=i+j;printf(“%d”,k)return0;}Pythoni=5j=3k=i+jprint(k)JavapublicclassAddition{publicstaticvoidmain(Stringargs[]){inti=5;intj=3;intk;k=i+j;System.out.println(k);}}1.2程序設計語言1.2程序設計語言高級語言低級語言翻譯編譯方式和解釋方式程序的執行方式計算機編程方法1分析問題2建立數學模型3設計算法4編寫代碼01020304計算機編程方法輸入(input)處理(process)輸出(output)圓半徑r圓面積area計算圓面積:area=π*r*rr=eval(input()) area=3.14*r*r print(area) 1.3Python語言簡介荷蘭人Guido發明1989正式發布1991Python2.0發布2000Python3.0發布2008Python3.132024Python的創始人吉多·范羅蘇姆,在1989年的圣誕節期間,為了打發圣誕節的無趣,決心開發一個新的腳本解釋程序,作為ABC語言(一種教學編程語言)的一種繼承。2025年1月TIOBE排行榜Python語言特點Python支持以交互模式運行程序,包含便捷的高級數據類型,并且可以用C語言或C++來進行擴展,能扣快速編寫程序并即時滿足實際需求。Python既支持面向過程的編程有支持面向對象的編程,Python還支持繼承、重載,有利于代碼的復用性。Python的標準庫功能很強大,再加上不同應用領域眾多開源的第三方程序庫,給開發者提供了很多便利。Python的語法較為簡單,容易學習容易理解,同時網絡上學習資源也很豐富。簡單易學

面向對象可移植性易于使用資源豐富

免費開源Python是FLOSS(自由/開放源碼軟件)之一,使用者只要保留版權信息即可任意使用和修改源代碼,并將其用于各個領域。可以在任何安裝解釋器的計算機環境中執行;可以不經修改地實現跨平臺運行。Python語言的應用領域Python語言是一個通用編程語言,可用于編寫各領域的應用程序,這為該語言提供了廣闊的應用空間。從科學計算、數據處理到人工智能、網絡爬蟲、機器人等,Python語言都能夠發揮重要作用,而且很出色。Python語言的應用領域誰在使用Python1.4Python環境的安裝與配置到Python主頁下載并安裝Python基本開發和運行環境,網址:/downloads/

根據操作系統不同選擇不同版本下載相應的Python3.0系列版本程序1.4Python環境的安裝與配置1.4Python環境的安裝與配置1.4Python環境的安裝與配置交互方式方法1:命令行式運行Python。提示符1.4Python環境的安裝與配置交互方式方法2:調用IDLE來啟動Python圖形化運行環境1.4Python環境的安裝與配置文件方式:在IDLE的菜單欄中選擇“File→NewFile”選項1.5編碼規范(1)縮進Python對代碼縮進是硬性要求,嚴格使用縮進來體現代碼的邏輯從屬關系。一般以4個空格為一個縮進單位,并且同一個級別的代碼塊的縮進量必須相同。在函數定義、類定義、選擇結構、循環結構、異常處理結構和with語句等結構中,對應的函數體或語句塊都必須有相應的縮進。python程序是依靠代碼塊的縮進來體現代碼之間的邏輯關系的,縮進結束就表示一個代碼塊結束了。

1.5編碼規范(2)注釋

以符號#開始,表示本行#之后的內容為注釋。包含在一對三引號'''...'''或"""..."""之間且不屬于任何語句的內容將被解釋器認為是注釋。(文件方式)(4)符號

在Python語言所有的語法符號,如冒號“:”、單引號“'”、雙引號“"”和小括號()等,都必須在英文輸入法下輸入,字符串中的符號除外。(3)Python語言區分大小寫例如:Num、num、NUM是完全不同的三個名稱。1.5編碼規范(5)換行符如果一行語句太長,可以在尾部添加上反斜杠“\”來換行分成多行,但是更建議使用括號來包含多行內容。(6)建議最好在函數定義和一段完整的功能代碼之后增加2個空行,在運算符兩側各增加一個空格,逗號后面增加一個空格。1.6第三方庫的安裝pip命令示例說

明piplist顯示當前已安裝的所有模塊pipinstallSomePackage[==version]在線安裝SomePackage模塊的指定版本pipinstall--upgradeSomePackage升級SomePackage模塊pipuninstallSomePackage[==version]卸載SomePackage1.6第三方庫的安裝例如:安裝常用科學計算的擴展庫numpy1.7擴展庫的導入與使用(1)語法格式:import

模塊名[as別名]>>>importmath#導入標準庫math>>>math.sin(0.5)#求0.5(單位是弧度)的正弦0.479425538604203>>>importrandom#導入標準庫random>>>n=random.randint(1,100)#獲得[1,100]區間上的隨機整數>>>importturtleast#導入標準庫turtle>>>t.circle(50)#繪制半徑為50的圓>>>importos.pathaspath#導入標準庫os.path,并設置別名為path>>>path.isfile(r'C:\windows\notepad.exe')True>>>importnumpyasnp#導入擴展庫numpy,并設置別名為np>>>a=np.array((1,2,3,4))#通過模塊的別名來訪問其中的對象>>>aarray([1,2,3,4])1.7擴展庫的導入與使用(2)語法格式:from

模塊名import

方法名[as別名]>>>frommathimportsin#只導入模塊中的指定對象,訪問速度略快>>>sin(1)0.8414709848078965>>>frommathimportsinass

#給導入的對象起個別名>>>s(1)0.8414709848078965>>>fromos.pathimportisfile>>>isfile(r'C:\windows\notepad.exe')True(3)語法格式:from

模塊名import

*>>>frommathimport*#導入標準庫math中所有對象>>>sin(3)#求正弦值0.1411200080598672本章小結本章首先簡單介紹了計算機的硬件系統、軟件系統與程序設計語言,詳細介紹了Python語言的發展及現狀、特點與應用領域、Python開發環境的安裝與配置,最后講解Python語言編碼規范、第三方庫的安裝和擴展庫的導入及使用。學習目標:掌握Python語言的數據類型掌握Python語言的保留字,變量的命名和賦值掌握Python語言的基本輸入輸出函數掌握Python語言表達式的運算次序,并能夠計算出結果知識導圖第二章

基本數據類型、運算符與表達式2.1引例2.2基本數據類型2.3標識符和保留字2.4變量和賦值語句2.5基本輸入與輸出2.6運算符和表達式2.7混合運算和數值類型的轉換2.1引例——華氏度攝氏度轉換分析需求

利用程序進行溫度轉換,由用戶輸入一個溫度值,程序將轉換后的溫度輸出出來。這里要注意的是,如果輸入的是攝氏度,那程序需要轉換為華氏度輸出,如果輸入的是華氏度,那程序就要轉換成攝氏度輸出。設計算法

輸入:首先確定要輸入一個數字的溫度值,另外輸入時還要體現的是這個數字是攝氏度還是華氏度,因此在數字前我們加上一個字母標識。例如用C24表示攝氏24度,F72表示華氏72度。也就是說,每次輸入內容中既有溫度體系標識,還有需要轉換的溫度值。

計算:首先要根據輸入溫度體系標識,也就是輸入內容中的首字符,如果首字符是C,則使用公式F=C*1.8+32計算得到華氏度,如果首字符是F,則使用公式C=(F–32)/1.8計算得到攝氏度。

輸出:輸出標識和溫度值2.1引例——華氏度攝氏度轉換編寫程序#eg02-01.py#溫度轉換程序temperature=input('請輸入溫度標識和溫度值:')#輸入要轉換的溫度iftemperature[0]in['c','C']:#判斷首字符是否為字母C和cf=eval(temperature[1:])*1.8+32#計算華氏度print("華氏溫度為:{:.2f}".format(f))#輸出華氏度eliftemperature[0]in['f','F']:#判斷首字符是否為字母F和fc=((eval(temperature[1:])-32)/1.8)#計算攝氏度print("攝氏溫度為:{:.2f}".format(c))#輸出攝氏度else:#首字符不是上訴四個字母時print("輸入錯誤!請重新運行。")#提示錯誤信息2.1引例——華氏度攝氏度轉換輸入與編輯程序

啟動IDLE后,選擇“File”,再選擇”NewFile“,再彈出的新窗口內輸入以上程序,保存為eg02-01.py。運行調試

選擇“Run”,再選擇”RunModule“。請輸入溫度標識和溫度值:C24華氏溫度為:75.202.2基本數據類型數值類型int,float,complex文本類型str邏輯類型bool序列類型list,tuple,range集合類型set,frozenset映射類型dict二進制類型bytes,bytearray,memoryview2.2.1數值類型----整型

整型(int)就是不帶小數點的數字,Python中的整數包括正整數、0和負整數。Python整數的取值范圍可是說是無限的(僅受限于運行Python的計算機的硬件)。可以使用以下進制來表示整數:十進制形式

我們平時所見的整數就是十進制形式,它由0-9十個數字組成。例如:789,-35。二進制形式

由0和1兩個數字組成,書寫時以0b或0B開頭。例如:0b1001,-0B111。八進制形式

八進制整數由0-7八個數字組成,以0o或0O開頭。注意,第一個符號是數字0,第二個符號是大寫或小寫的字母“O”。例如:0o61,-0O25。十六進制形式

由0-9十個數字和A-F(或a-f)六個字母組成,書寫時以0x或0X開頭。例如:0x2f,0X2E。2.2.1數值類型----浮點型

浮點型(float)與數學中的實數的基本類似,用來表示帶有小數的數值。Python中浮點數必須帶有小數部分,小數部分可以是0。浮點數有兩種表示方法:十進制形式

十進制形式就是我們平時看到的小數形式,例如12.3、123.0、0.123。

注意:書寫時必須包含一個小數點,如上例中123.0,如果省略寫成123,就會被Python當作整數處理。指數形式

指數形式的寫法為:aEb或aeba為尾數部分,書寫為十進制形式;b為指數部分,書寫為十進制整數;E或e是固定的字符,用于分割尾數部分和指數部分。整個表達式等價于a×10b。例如:3.84E8=3.84×108,其中3.84是尾數,8是指數。只要寫成指數形式就是浮點數,即使它的最終值看起來像一個整數。例如:2E3等價于2000.0,2E3是一個浮點數。2.2.1數值類型----復數

復數(Complex)是Python的內置類型,直接書寫即可以使用。換句話說,Python語言本身就支持復數,而不需要依賴于標準庫或者第三方庫。

復數由實部(real)和虛部(imag)構成,在Python中,復數的虛部以j或者J作為后綴,具體格式為:a+bja表示實部,b表示虛部。例如:5+0.6j就是一個復數。2.2.2字符串類型Python中的字符串必須由單引號(')、雙引號(")、三引號('''或""")包圍,字符串的開始和結束必須為相同類型的引號。格式為:‘字符串內容’

“字符串內容”

'''字符串內容''‘或"""字符串內容"""

字符串的內容可以包含英文字母、標點、特殊符號、中文、日文等計算機系統中所支持的所有文字。例如:"12345"、'123abc'、"佳木斯大學“Python語言中三引號通常用來處理長字符串,如程序中有大段文本內容需要定義成字符串時可以使用,也經常用于對多行內容進行注釋時。2.2.2字符串類型Python中的字符串是以unicode編碼存儲的字節數組。因此,字符串中的中文字符和英文字符都算1個字符。字符串有兩種取值順序,如右圖所示。如果需要從字符串中獲得子字符串,可以使用[頭下標:尾下標]的格式來截取相應的字符串,其中下標從0起始,可以使用正數和負數,下標可以為空表示取到頭或尾。2.2.2字符串類型Python字符串使用單引號和雙引號沒有區別。當字符串內容中出現引號時,我們需要進行特殊處理,否則Python會解析出錯,>>>print('I'mallears')#執行后系統提示語法錯誤

SyntaxError:invalidsyntax們需要進行特殊處理,否則Python會解析出錯

解決該問題的方法有兩種:對引號進行轉義

在引號前面添加反斜杠“\”就可以對引號進行轉義,讓Python把它作為普通文本對待。使用不同的引號包圍字符串

如果字符串內容中出現了單引號,那么我們可以使用雙引號包圍字符串,反之亦然。2.2.3邏輯類型Python語言提供了邏輯(bool)類型來表示真(對)或假(錯),比如表達式3>2,這個表達式是正確的,在計算機程序中稱之為真(對),Python語言使用True來代表;而表達式2>3,這個表達式是錯誤的,在計算機程序中稱之為假(錯),Python語言使用False來代表。True和False都是Python語言中的關鍵字,輸入時一定要注意字母的大小寫,否則解釋器會報錯。2.2.4其他常用數據類型列表(list)

列表中元素的數據類型可以不相同,它支持數字,字符串甚至可以包含列表。列表可以完成大多數集合類的數據結構實現。

列表的格式為:[元素1,元素2,…]元組(tuple)

元組與列表類似,元組中元素的數據類型可以不相同,元組也是有序的,也可以被截取。不同之處在于元組的元素不能修改。

元組的格式為:(元素1,元素2,…)2.2.4其他常用數據類型集合類型(set)

集合類似于數學中的集合概念,是由0個或數個數據項的無索引無序組合。集合中的元素不可重復,元素類型不能是可變的數據類型。

集合的格式為:{元素1,元素2,…}字典類型(dict)

字典是一種映射類型,使用{}標識,元素的形式是“鍵-值”,鍵必須使用不可變數據類型,可以通過引用鍵名來訪問元素,字典中元素是無序的。字節符類型(bytes)

字節符以二進制形式來存儲數據,和字符串類似,也適用單引號、雙引號、三引號作為定界符。如果字符串的內容都是ASCII字符,那么直接在字符串前面添加b前綴就可以轉換成字節符類型。2.3.1標識符Python中標識符的主要作用就是作為變量、函數、類、模塊以及其他對象的名稱。

標識符的命名要遵循以下的命令規則:標識符是由大寫小寫字母、下劃線、數字和漢字組成,但首字符不能是數字,長度沒有限制。標識符不能和Python中的保留字相同。Python語言中,標識符中的字母是嚴格區分大小寫的,NAME、Name和name是三個不同的標識符。Python語言中,以下劃線開頭的標識符有特殊含義,例如:以單下劃線開頭的標識符,表示不能直接訪問的類屬性;以雙下劃線開頭的標識符表示類的私有成員;以雙下劃線作為開頭和結尾的標識符是專用標識符。故應避免定義下劃線開頭的標識符。2.3.2保留關鍵字andexecnotFalseassertfinallyorNonebreakforpassTrueclassfromprint

continueglobalraise

defifreturn

delimporttry

elifinwhile

elseiswith

exceptlambdayield

2.4變量和賦值語句變量

變量可以是任意數據類型。變量名要遵循標識符的命名規則,變量值是變量中保存的數據,可以被多次修改。賦值語句

在編程語言中,將數據放入變量的過程叫做賦值。

格式為:變量=表達式>>>pi=3.1415926#將圓周率賦值給變量pi>>>str="佳木斯大學"#將Python教程的地址賦值給變量str>>>flag=True#將布爾值賦值給變量flag>>>print(pi,str,flag)3.1415926佳木斯大學True值運算符。格式為:變量=表達式2.4變量和賦值語句鏈式賦值語句

鏈式賦值用于同一個對象賦值給多個變量。>>>a=b=c=24#變量a,b,c的值都是24復合賦值語句復合賦值運算符名稱功能+=加法賦值運算符c+=a等效于c=c+a-=減法賦值運算符c-=a等效于c=c-a*=乘法賦值運算符c*=a等效于c=c*a/=除法賦值運算符c/=a等效于c=c/a%=取模賦值運算符c%=a等效于c=c%a**=冪賦值運算符c**=a等效于c=c**a//=取整除賦值運算符c//=a等效于c=c//a2.4變量和賦值語句序列解包賦值

格式為:變量1,變量2,…,變量n=表達式1,表達式2,…,表達式n

需要注意的是,賦值符號兩端數量必須一致。>>>one=10>>>two=20>>>A,B=one,two>>>print(A,B)10202.5基本輸入與輸出輸入語句input()是Python的內置函數,用于從控制臺讀取用戶輸入的內容。input()函數總是以字符串的形式來處理用戶輸入的內容,所以用戶輸入的內容可以包含任何字符。

格式:變量=input(提示信息)

說明:input()函數把用戶輸入的任何字符作為一個字符串,存儲到變量中。提示信息會在用戶輸入前顯示在控制臺上,提示用戶應該輸入的內容。提示信息部分可以不寫,那樣在輸入前就不會有提示信息。>>>name=input("Enteryourname:")#利用input()輸入姓名:Enteryourname:陳銘>>>print("Hello,",name)#輸出歡迎消息。Hello,陳銘2.5基本輸入與輸出輸出語句格式:print(value1,value2,…,sep='',end='\n')

說明:1.value1,value2,…是需要輸出的內容,可以是變量和值,一次可以輸出多個,中間使用逗號間隔。2.以上使用print()函數輸出多項時,顯示的輸出內容默認以空格分隔,如果希望改變為其它的分隔符號,加入sep參數進行設置。3.end參數的默認值是“\n”,這個“\n”就表示換行。如果希望print()函數輸出之后不進行換行,需要對end參數重新設置。2.5基本輸入與輸出輸出語句>>>stu_name='陳銘'>>>stu_age=19>>>print("姓名:",stu_name,"年齡:",stu_age)姓名:陳銘年齡:19>>>print("姓名:",stu_name,"年齡:",stu_age,sep='|')姓名:|陳銘|年齡:|192.6運算符和表達式運算符功能說明+兩個對象相加,正號、字符串合并與連接,列表、元祖-兩個對象相減,相反數,集合差集*兩個對象相乘,序列重復/真除法//求整商%求余數,字符串格式化**求冪運算>,>=,<,<=,==,!=比較大小,比較集合的包含關系or邏輯或運算and邏輯與運算not邏輯非運算in成員測試is對象統一性測試&,|,^集合交集,集合并集,對稱差集@矩陣相乘運算符2.6運算符和表達式算術運算符及表達式“+”運算符可用于算術加法,也可用于字符串、元組、列表的連接不同類型的對象之間的相加或連接可能會出現異常。>>>60+3494>>>(7,8,9)+(10,)(7,8,9,10)>>>'abc'+'456''abc456'>>>True+562.6運算符和表達式算術運算符及表達式“-”運算符可用于算術減法,也可用于相反數。>>>60-3426>>>--11“*”運算符可用于算術乘法,也可以用于字符串、元組、列表這幾個序列類型與整數的乘法,生成新的序列對象。>>>2*3.14*637.68>>>(1,2,3)*2(1,2,3,1,2,3)>>>'hello!'*3'hello!hello!hello!'2.6運算符和表達式算術運算符及表達式“/”和“//”運算符分別表示算術除法和算術求整商。>>>7.0/23.5>>>7.0//23.0>>>15//43>>>-15//4-42.6運算符和表達式算術運算符及表達式“%”運算符可用于整數或實數的求余運算,也可以用于字符串格式化。>>>10%31>>>-10%32>>>'%c,%s,%d'%(97,97,97)'a,97,97'“**”運算符表示冪運算。和內置函數pow()作用相同。>>>2**382.6運算符和表達式關系運算符及表達式

關系運算符用于對常量、變量或表達式的結果進行大小比較。如果這種比較是成立的,則返回True(真),反之則返回False(假)。>>>25>36False>>>2<4<6True>>>'one'>'five'True>>>False<TrueTrue>>>[2,3,4]<[2,3,5]True2.6運算符和表達式邏輯運算符及表達式

邏輯運算符包含邏輯與運算符“and”、邏輯或運算符“or”和邏輯非運算符“not”。邏輯運算符“and”和“or”可以用來操作任何類型的表達式,因此邏輯運算的結果也不一定是bool類型,它也可以是任意類型。而邏輯運算符“not”一定會返回bool類型。>>>14>6and30>50False>>>20and1010>>>20or1020>>>1notin{1,3,5}False>>>notFalseTrue2.7混合運算和數值類型的轉換

當多個運算符同時出現在一個表達式中時,我們稱之為混合運算。混合運算中先執行哪個運算符,后執行哪個運算符,就是運算符的優先級。Python支持幾十種運算符,被劃分成十九個優先級,同一級別上有多個運算符,需要按運算符的結合性來判斷運算的次序,表2.5列出了運算符的優先級和結合性。Python中大部分運算符都具有左結合性;只有乘方運算符、取反運算符、符號運算符、按位與運算符、邏輯非運算符具有右結合性。

混合運算的規則是:一個表達式中出現多個運算符時,Python會先比較各個運算符的優先級,按照優先級從高到低的次序執行;當運算符的優先級相同時,再根據結合性決定是自左向右還是自右向左執行,當執行完所有的運算符后,就會得到最終的結果。2.7混合運算和數值類型的轉換運算符說明Python運算符優先級結合性小括號()19(最高)無索引運算符x[i]或x[i1:i2[:i3]]18左屬性訪問x.attribute17左乘方**16右按位取反~15右符號運算符+(正號)、-(相反數)14右乘除*、/、//、%13左加減+、-12左位移>>、<<11左按位與&10右按位異或^9左按位或|8左比較運算符==、!=、>、>=、<、<=7左is運算符is、isnot6左in運算符in、notin5左邏輯非not4右邏輯與and3左邏輯或or2左逗號運算符exp1,exp21(最低)左2.7混合運算和數值類型的轉換

隱式轉換,是Python自動進行的轉換,常常發生在數值類型的算術運算中,隱式轉換的順序為邏輯類型、整數類型、浮點類型。>>>value_1=5+True>>>print(value_1)6>>>value_2=5.0+False>>>print(value_2)5.0>>>value_3=2*4.5>>>print(value_3)9.02.7混合運算和數值類型的轉換

顯示轉換不是Python自動進行的轉換,需要使用者使用特定的格式來實現類型轉換。整數類型和浮點類型的顯示轉換——int、float>>>int(14.56)#直接舍棄掉小數部分14>>>float(8)#轉換為浮點數8.08.0>>>float('2021.0')2021.0字符串類型的顯示轉換——str>>>'年齡:'+str(18)'年齡:18'本章小結

本章首先介紹了Python語言的基本數據類型,然后介紹了Python語言的標識符和系統保留字,詳細介紹了Python語言的變量以及變量的賦值,Python語言的基本輸入輸出函數的格式和使用,最后講解了Python語言的運算符和表達式以及混合運算,數據類型的轉換。主講教師:姓名學習目標掌握Python中的關系運算符和邏輯運算符掌握單選擇、雙選擇、多選擇結構的用法掌握if語句嵌套的用法掌握for循環的使用方法掌握while循環的使用方法掌握break和continue的使用方法學會random庫的使用方法學習重點利用關系運算符和邏輯運算符構造條件表達式,掌握單選擇、雙選擇、多選擇結構的用法、語句結構、執行過程以及if語句的嵌套用法,掌握for循環和while循環結構的用法、語句結構、執行過程,掌握break和continue的使用方法,理解random庫的使用方法。學習難點if語句的嵌套循環的嵌套random庫的使用方法知識導圖3.1條件表達式在選擇結構和循環結構中,都需要根據條件表達式的值來確定下一步的執行流程。而在條件表達式中經常會用到關系運算符和邏輯運算符。條件表達式的值只要不是False、0(或000j等)、空值None、空列表、空元組、空集合、空字典、空字符串、空range對象或其他空迭代對象,Python解釋器均認為與True等價。從這個意義上來講,所有的Python合法表達式都可以作為條件表達式,包括含有函數調用的表達式。3.1.1關系運算符Python語言中的關系運算符如表3.1所示(假設a=1,b=2)。表3.1Python語言中的關系運算符3.1.1關系運算符Python語言中的關系運算符最大的特點是可以連用,這非常類似數學中的寫法,與日常的理解完全一致。使用關系運算符的前提是操作數之間必須可以比較大小,如在一個字符串和一個數值之間比較大小就沒有意義,Python語言不支持這樣的運算。3.1.1關系運算符【例3-1】關系運算符應用舉例>>>a,b=1,2>>>0<a<b#表示a>0并且a<b,結果為TrueTrue>>>a==b#表示a和b的值是否相等,結果為FalseFalse>>>a>"BC"#數值不可與字符串比較大小,語句報錯Traceback(mostrecentcalllast):File"<pyshell#11>",line1,in<module>a>"BC"#數值不可與字符串比較大小,語句報錯TypeError:'>'notsupportedbetweeninstancesof'int'and'str'>>>"ABC">"ab"#字符串按照字符的unicode編碼比較,結果為FalseFalse>>>"Python"<"python"#字符串按照字符的unicode編碼比較,結果為TrueTrue3.1.1關系運算符另外,在Python語法中,條件表達式中不允許使用賦值運算符“=”,避免了誤將關系運算“==”寫成賦值運算符“=”帶來的麻煩。在條件表達式中使用賦值運算符“=”將拋出異常,提示語法錯誤。>>>ifa=3:#條件表達式中出現賦值運算符,拋出異常SyntaxError:invalidsyntax3.1.2邏輯運算符當使用條件表達式的時候往往還需要借助邏輯運算符and(并且)、or(或者)和not(取反)。【例3-2】邏輯運算符應用舉例>>>a,b=1,2>>>a>1andb<10#表示a>1并且b<10,結果為FalseFalse>>>a>1orb<10#表示a>1或者b<10,結果為TrueTrue>>>not(a>1andb<10)#表示a>1并且b<10結果取反,結果為TrueTrue關系運算符、邏輯運算符都具有短路求值或惰性求值的特點,可能不會對所有表達式進行求值,而是只計算必須計算的表達式的值。3.1.3條件表達式使用各種運算符可以構建不同的條件表達式,例如:(1)假設有整數x,表示x為一個奇數。x%2==1(2)假設有整數x,表示x是3的倍數并且個位上的數字為3。x%5==0andx%10==3(3)假設有三條線段,長度分別為a、b、c,表示a、b、c能構成一個三角形。(a+b>c)and(b+c>a)and(a+c>b)(4)假設有某個年份year,那么表示year是閏年的條件是:如果year是4的倍數且不是100的倍數,或者year是400的倍數,那么year即為閏年。(year%4==0)and(year%100!=0)or(year%400==0)3.2選擇結構常見的選擇結構有單分支選擇結構、雙分支選擇結構、多分支選擇結構及嵌套的分支結構。另外,循環結構和異常處理結構中也可以帶有else子句,可以看作特殊形式的選擇結構,在3.3循環結構中會有介紹。3.2.1單分支選擇結構單分支選擇結構是最簡單的一種選擇結構,語法如下所示。if表達式:

語句塊【注意】(1)當表達式的值為True或其他與True等價的值時,表示條件滿足,語句塊被執行,否則該語句塊不被執行,而是繼續執行后面的其它代碼。在這里,語句塊有可能被執行,也有可能不會被執行,依賴于條件表達式的判斷結果。3.2.1單分支選擇結構(2)其中表達式后面的冒號“:”是不可缺少的,表示一個語句塊的開始,并且語句塊必須做相應的縮進,一般是以4個空格為縮進單位。后面的幾種形式的選擇機構和循環結構中的“:”也都是必不可少的。(3)在Python語言中代碼的縮進非常重要,縮進是體現代碼邏輯關系的重要方式,所以在編寫語句塊的時候,務必注意代碼縮進,且同一個代碼塊必須保證相同的縮進量。3.2.1單分支選擇結構【例3-3】從鍵盤輸入兩個整數a和b,比較a和b的大小,并輸出a和b,其中a為輸入的兩個整數中的較大者。【參考代碼】a=int(input("請輸入整數a:"))b=int(input("請輸入整數b:"))print("輸入值a={},b={}".format(a,b))ifa<b:a,b=b,aprint("比較后的值a={},b={}".format(a,b))運行結果1:請輸入整數a:1請輸入整數b:2輸入值a=1,b=2比較后的值a=2,b=1

運行結果2:請輸入整數a:2請輸入整數b:1輸入值a=2,b=1比較后的值a=2,b=13.2.2雙分支選擇結構

我們在解決很多問題的時候,可能有兩種結果需要處理,因此可以引入雙分支結構,其語法格式如下:if條件表達式:語句塊1else:

語句塊2

當條件表達式的值為True時執行語句塊1,否則執行語句塊2。這里的語句塊1和語句塊2在一次運行過程中有且只有一個能被執行。3.2.2雙分支選擇結構【例3-4】宋代才子蘇軾寫過一首詞《菩薩蠻·夏閨怨》,詞句如下:

柳庭風靜人眠晝,晝眠人靜風庭柳。

香汗薄衫涼,涼衫薄汗香。

手紅冰碗藕,藕碗冰紅手。

郎笑藕絲長,長絲藕笑郎。

這是一首著名的回文詞,你能編寫一段代碼來判斷用戶輸入的字符串是否為回文嗎?3.2.2雙分支選擇結構【參考代碼】str=input("請輸入字符串:")if(str==str[::-1]):print(str+"為回文串")else:print(str+"不是回文串")運行結果1:請輸入字符串:abcdeabcde不是回文串

運行結果2:請輸入字符串:abcbaabcba為回文串3.2.2雙分支選擇結構【例3-5】輸入任意三個正數a、b、c,判斷a、b、c能否作為三角形的三條邊,如果能則求出三角形的面積。importmatha=float(input("請輸入三角形的邊長a:"))b=float(input("請輸入三角形的邊長b:"))c=float(input("請輸入三角形的邊長c:"))if(a+b>candb+c>aanda+c>b):p=(a+b+c)/2area=math.sqrt(p*(p-a)*(p-b)*(p-c))print("三角形的面積為:{:.2f}".format(area))else:print("用戶輸入數據有誤!“)運行結果1:請輸入三角形的邊長a:1請輸入三角形的邊長b:2請輸入三角形的邊長c:3用戶輸入數據有誤!

運行結果2:請輸入三角形的邊長a:3請輸入三角形的邊長b:4請輸入三角形的邊長c:5三角形的面積為:6.003.2.2雙分支選擇結構

另外,Python還提供了一個三元運算符,并且在三元運算符構成的表達式中還可以嵌套三元運算符,可以實現與選擇結構相似的效果。語法為語句1if條件表達式else語句2

當條件表達式的值與True等價時,表達式的值為語句1,否則表達式的值為語句2。另外,語句1和語句2本身也可以是復雜表達式,也可以包含函數調用,甚至可以是三元運算符構成的表達式。這個結構的表達式也具有惰性求值的特點。3.2.3多分支選擇結構有的時候情況比較復雜,程序的分支會多余兩條,那么就需要引入多分支結構,多分支選擇結構的語法為:If條件表達式1:語句塊1elif表達式2:語句塊2elif表達式3:語句塊3……else:

語句塊n其中,elif是elseif的縮寫3.2.3多分支選擇結構【例3-7】根據用戶的身高和體重,計算用戶的BMI指數,并給出相應的健康建議。BMI指數,即身體質量指數,是利用體重(kg)除以身高(m)的平方得出的數字[BMI=體重(kg)÷身高2(m)],是目前國際上常用的衡量人體胖瘦程度以及是否健康的一個標準。下面先來看看標準BMI數值:

過輕:低于18.5;

正常:18.5~23.9;

過重:24~27.9;

肥胖:28~32;

過于肥胖:32以上。3.2.3多分支選擇結構【參考代碼】height=eval(input("請輸入您的身高(m):"))weight=eval(input("請輸入您的體重(kg):"))BMI=weight/height/heightprint("您的BMI指數是:{:.1f}".format(BMI))ifBMI<18.5:print("您的體型偏瘦,要多吃多運動哦!")elif18.5<=BMI<24:print("您的體型正常,繼續保持喲!")elif24<BMI<28:print("您的體型偏胖,有發福跡象!")elif28<BMI<32:print("不要悲傷,您是個迷人的胖子!")else:print("什么也不說了,您照照鏡子就知道了.....")運行結果1:請輸入您的身高(m):1.8請輸入您的體重(kg):75您的BMI指數是:23.1您的體型正常,繼續保持喲!3.2.4pass語句pass是空語句,是為了保持程序結構的完整性,一般用做占位語句,保證格式完整,保證語義完整。age=int(input("請輸入你的年齡:"))ifage<12:print("嬰幼兒")elifage<18:print("青少年")elifage<30:print("成年人")elifage<50:#稱呼未定else:print("老年人")3.2.4pass語句當年齡大于等于30并且小于50時,我們沒有使用print()語句,而是使用了一個注釋,希望以后再處理成年人的情況。我們希望當Python執行到該elif分支時,會跳過注釋,什么都不執行,但是Python提供了一種更加專業的做法,就是空語句pass,pass是Python中的關鍵字,用來讓解釋器跳過此處,什么都不做。就像上面的情況,有時候程序需要占一個位置,或者放一條語句,但又不希望這條語句做任何事情,此時就可以通過pass語句來實現,使用pass語句比使用注釋更加優雅。3.2.4pass語句age=int(input("請輸入你的年齡:"))ifage<12:print("嬰幼兒")elifage<18:print("青少年")elifage<30:print("成年人")elifage<50:passelse:print("老年人")3.2.4pass語句另外,pass語句在循環結構和函數中也有應用,在循環中,pass也常用于為復合語句編寫一個空的主體,比如你想要一個while語句無限次循環,每次迭代時不需要任何操作,你可以這樣寫:whileTrue:pass在函數中,當編寫一個程序時,你還沒有完成執行語句部分的思路,這時你可以用pass語句來占位,也可以當做是一個標記,是過后來完成的代碼。比如下面這樣:defiplaypython():pass3.3循環結構Python主要有for循環和while循環兩種形式的循環結構,多個循環可以嵌套使用。并且還經常和選擇結構嵌套使用來實現復雜的業務邏輯。while循環一般用于循環次數難以提前確定的情況,當然也可以用于循環次數確定的情況;for循環一般用于循環次數可以提前確定的情況,尤其適用于枚舉或遍歷序列或迭代對象中元素的場合。3.3.1可迭代對象可循環選代的對象稱為可迭代對象,迭代器和生成器函數是可迭代對象,在Python中提供了定義選代器和生成器的協議和方法。相對于序列,可送代對象僅在迭代時產生數據,故可以節省內存空問。Python語言提供了若干內置可迭代對象,例如range、map、filter、enumetate、zip;在標準庫itertools模塊中包含各種迭代器,這些迭代器非常高效,且內存消耗小。迭代器既可以單獨使用,也可以組合使用。在Python中,實現了__iter__()的對象是可迭代對象。在collections.abc模塊中定義了抽象基類Iterable,使用內置的isinstance()可以判斷一個對象是否為可迭代對象。序列對象都是可選代對象,生成器函數和生成器表達式也是可迭代對象。3.3.2range對象range()是Python語言中的一個內置函數,調用這個函數就能產生一個可迭代序列,一般形式為:range(start,stop[,step])

range返回的數字序列從start開始,到stop結束(但不包含stop),如果制定了可選的步長step,則序列按照步長step增加,即range()可生成滿足條件的數,具體來說是返回一個從start開始到小于stop的相鄰數的差為step的等差數列可迭代序列,結果中包含start一直到小于stop的整數,range()對象的參數必須為整數(可以是內置的int或任何實現了__index__特殊方法的對象)。如果省略step參數,其默認值為1。如果省略start參數,其默認值為0,如果step為零則會引發ValueError。3.3.2range對象因此適合放在for語句的首部,range()函數有以下幾種不同的調用方式:(1)range(n),range(n)得到的迭代序列為:0,1,2,3,……,n-1。例如,range(100)表示序0,1,2,3,...,99。當n≤0的時候序列為空。(2)range(m,n),range(m,n)得到的迭代序列為:m,m+1,m+2,……,n-1。例如,range(11,16)表示序列11,12,13,14,15,當m≥n的時候序列i為空。(3)range(m,n,d),range(m,n,d)得到的迭代序列為:m,m+d,m+2d,……,n-1,按步長值d遞增,如果d為負則遞減,直至那個最接近但不包括n的等差值。因此,range(11,16,2)表示序列:11,13,15,range(15,4,3)表示序列:15,12,9,6,這里的d可以是正整數,也可以是負整數,正數表示增量,而負數表示減量,也有可能出現空序列的情況。3.3.2range對象一定注意,在很多種情況下,range()函數返回的對象的行為都很像一個列表,但是它確實不是一個列表,它只是在迭代的情況下返回指定索引的值,但是它并不會在內存中真正產生一個列表對象,這樣也是為了節約內存空間。例如:>>>range(1,10)range(1,10)>>>print(range(1,10))range(1,10)>>>list(range(1,10))[1,2,3,4,5,6,7,8,9]3.3.2range對象更多的range()舉例如下:>>>list(range(10))#從0開始到10[0,1,2,3,4,5,6,7,8,9]>>>list(range(1,11))#從1開始到11[1,2,3,4,5,6,7,8,9,10]>>>list(range(0,30,5))#步長為5[0,5,10,15,20,25]>>>list(range(0,10,3))#步長為3[0,3,6,9]>>>list(range(0,-10,-1))#負數[0,-1,-2,-3,-4,-5,-6,-7,-8,-9]3.3.3while語句while是一個預測試的循環,while在循環開始前并不知道重復執行循環語句序列的次數,while語句按不同條件執行循環語句(塊)零次或多次。while語句中,用一個表示邏輯條件的表達式來控制循環,當條件成立的時候反復執會循環體,直到條件不成立的時候循環結束。while語句的語法格式比較簡單,如下所示:while條件表達式:語句塊[else:else子句代碼塊]3.3.3while語句說明:(1)while循環語句的執行過程如下,如圖3-3所示:①計算條件表達式。②如果條件表達式的結果為True,控制將轉到循環語句(塊),即進入循環體。當到達循環語句序列的結束點時循環體轉①,即控制轉到while語句的開始,繼續循環。③如果條件表達式的結果為False,退出while循環,即控制轉到while循環語句的后繼語句。(2)條件表達式是每次進入循環之前進行判斷的條件,可以為關系表達式或邏輯表達式,其運算結果為True(真)或False(假),在條件表達式中必須包含控制循環的變量。3.3.3while語句(3)循環體語句序列可以是一條語句,也可以是多條語句。(4)在循環語句序列中至少應包含改變循環條件的語句,以使循環趨于結束,避免“死循環”。(5)同樣,這里條件表達式后的“:”不可省略,語句塊注意縮進。(6)對于帶有else子句的循環結構如果循環因為條件表達式不成立或序列遍歷結束而自然結束時則執行else結構中的語句,如果循環是因為執行了break語句而導致循環提前結束則不會執行else中的語句。3.3.3while語句【例3-8】編寫程序,輸出2000年至2500年間的所有閏年,要求每行輸出8個。y=2001count=0flag=Truewhileflag:ify%4==0andy%100!=0ory%400==0:ifcount%8==0:print()print(y,end='')y+=1count+=1else:y+=1ify==2500:flag=False運行結果:20042008201220162020202420282032203620402044204820522056206020642068207220762080208420882092209621042108211221162120212421282132213621402144214821522156216021642168217221762180218421882192219622042208221222162220222422282232223622402244224822522256226022642268227222762280228422882292229623042308231223162320232423282332233623402344234823522356236023642368237223762380238423882392239624002404240824122416242024242428243224362440244424482452245624602464246824722476248024842488249224963.3.3while語句【例3-9】我國有13億人口,如果按人口年增長0.8%計算,多少年后將達到26億?【參考代碼】n=13y=0whilen<26:y+=1n=n*(1+0.008)print(y

溫馨提示

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

評論

0/150

提交評論