大學計算機-計算思維與人工智能(第2版)課件 第4章 Python程序設計基礎_第1頁
大學計算機-計算思維與人工智能(第2版)課件 第4章 Python程序設計基礎_第2頁
大學計算機-計算思維與人工智能(第2版)課件 第4章 Python程序設計基礎_第3頁
大學計算機-計算思維與人工智能(第2版)課件 第4章 Python程序設計基礎_第4頁
大學計算機-計算思維與人工智能(第2版)課件 第4章 Python程序設計基礎_第5頁
已閱讀5頁,還剩84頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章Python程序設計基礎content重點難點重點:1.Python的安裝與配置環(huán)境2.Python包管理與第三方庫導入3.Python基本輸入/輸出4.Python數(shù)據(jù)類型5.程序控制語句難點:1.Python數(shù)據(jù)類型2.程序控制語句Contents目錄4.1Python開發(fā)環(huán)境搭建與使用4.2Python包管理與第三方庫導4.3Python代碼規(guī)范及幫助4.4Python基本輸入/輸出4.5常量和變量4.6Python數(shù)據(jù)類型4.7運算符與表達式4.8程序控制語句4.9Python程序舉例4.1Python開發(fā)環(huán)境搭建與使用4.1.1Python語言特點1.Python語言簡介

Python語言由吉多?范羅蘇姆(GuidovanRossum)于1989年圣誕節(jié)期間開始設計,首個公開發(fā)行版Python0.9.0于1991年正式發(fā)布。2.Python語言特點(1)簡單(2)易學、易讀、易維護(3)免費、開源(4)可移植性(5)解釋性(6)面向對象(7)可擴展性(8)可嵌入性(9)豐富的庫(10)高級動態(tài)編程4.1.2Python的安裝與配置環(huán)境1.安裝Python下面以Windows系統(tǒng)為例演示Python標準安裝流程:(1)登錄官網下載安裝程序(2)安裝

(3)驗證安裝成功2.環(huán)境變量補配配置流程如下:(1)在“此電腦”圖標處單擊鼠標右鍵,在彈出的快捷菜單中選擇“屬性”菜單項。(2)在“計算機名、域和工作組設置”面板右側單擊“更改設置”選項,在“系統(tǒng)屬性”對話框選擇“高級”選項卡。(3)單擊“環(huán)境變量”按鈕,在“系統(tǒng)變量”區(qū)域雙擊“Path”變量。(4)在彈出的“編輯環(huán)境變量”對話框中單擊“新建”按鈕,依次添加Python的安裝路徑以及Scripts子文件夾路徑,以Python實際安裝路徑為準。如果機器上安裝了多個版本的Python,建議使用“上移”按鈕,把最常用的版本所在路徑放在Path變量的開始處,然后單擊“確定”按鈕即可。(5)配置驗證。3.IDLE的啟動IDLE(IntegratedDevelopmentandLearningEnvironment)是Python官方內置的輕量級IDE,主要服務于教學場景與小規(guī)模腳本調試。安裝好python以后,IDLE就會自動安裝,不需要另外安裝,有交互式和腳本(文件)式兩種執(zhí)行方式。(1)交互式執(zhí)行方式

安裝Python后,可以通過交互式運行代碼。單擊“開始”->“所有程序”->“Python3.12”,->“IDLE(Python3.1264-bit)”菜單項,即可啟動IDLE打開Shell窗口。

在提示符“>>>”后輸入Python語句后,按回車鍵執(zhí)行并顯示結果,如果需要再次執(zhí)行前面執(zhí)行過的語句,可以按組合鍵Alt+P和Alt+N翻看上一條語句或下一條語句.(2)腳本式執(zhí)行方式:

如果需要保存和反復修改、運行代碼,可以通過腳本式執(zhí)行方式運行代碼,在IDLE窗口中單擊菜單欄的“File”->“NewFile”菜單項,新建一個Python文件。在新建的窗口中,編寫Python代碼。

代碼編寫完成后,單擊新建窗口菜單欄的“File”->“Save”菜單項,或使用快捷鍵Ctrl+S保存文件。

單擊菜單欄的“Run”->“RunModule”菜單項,或使用快捷鍵“F5”來運行Python文件。4.1.3PyCharm的安裝與使用1.PyCharm簡介

PyCharm是JetBrains公司推出的專業(yè)PythonIDE(IntegratedDevelopmentEnvironment),提供全生命周期的開發(fā),主要功能包括:(1)基礎開發(fā)功能(2)調試分析工具(3)工程化管理(4)版本控制集成2.PyCharm下載與安裝PyCharm下載與安裝步驟如下:(1)訪問JetBrains官方網站下載PyCharm集成開發(fā)環(huán)境安裝包。PyCharm有兩個版本:社區(qū)版(CommunityEdition),專業(yè)版(Professional)。(2)完成PyCharm安裝包下載后,定位至安裝文件保存目錄,雙擊擴展名為.exe的安裝程序文件啟動安裝進程。(3)按照安裝向導指引逐步完成配置,包括選擇安裝路徑、創(chuàng)建桌面快捷方式、配置環(huán)境變量等核心選項。安裝路徑不要選擇有中文的目錄,在“安裝選項”對話框中勾選全部復選框。(4)單擊“完成”按鈕結束安裝進程。3.PyCharm的使用

在使用PyCharm進行開發(fā)前,需確保系統(tǒng)已正確安裝Python解釋器并配置環(huán)境變量。

Python項目遵循標準層級結構:項目(Project)->包(Package)->模塊(Module)的三級組織方式,實際代碼邏輯通常存儲在.py格式的模塊文件中。(1)新建項目

單擊“文件”->“新建項目”菜單項,進入項目創(chuàng)建界面。在“位置”字段設置項目存儲路徑,建議使用英文目錄。確認配置信息后,單擊“創(chuàng)建”按鈕完成項目初始化。(2)新建包

在“項目名稱”目錄上單擊鼠標右鍵,在彈出的快捷菜單中選擇“新建”->“Python軟件包”菜單項,在彈出的對話框中輸入包名按回車鍵確認創(chuàng)建。(3)新建模塊/文件

在目標Python包上單擊鼠標右鍵,在彈出的快速菜單中選擇“新建”->“Python文件”選項。在彈出的對話框“名稱”處輸入模塊名稱,按回車鍵確認創(chuàng)建。

4.2Python包管理與第三方庫導入4.2.1Python包管理1.模塊(Module)以.py為擴展名的獨立代碼文件,實現(xiàn)特定數(shù)據(jù)處理功能。2.包(Package)通過目錄結構與__init__.py文件組織的模塊集合,主要作用是解決命名沖突,實現(xiàn)模塊化分層管理。3.庫(Library)功能關聯(lián)的包/模塊集合,分為三類:(1)標準庫(2)第三方庫(3)自定義庫4.2.2pip包管理工具

1.pip常用命令(1)安裝最新版本語法格式:pipinstallpackage-name例如:pipinstallrequests(2)安裝指定版本語法格式:pipinstallpackage-name==1.2.3(版本號)例如:pipinstallnumpy==2.2.3(3)升級庫版本語法格式:pipinstall--upgradepackage-name例如:pipinstall--upgradepandas(4)卸載庫語法格式:pipuninstallpackage-name例如:pipuninstallmatplotlib(5)查看已安裝的包及版本語法格式:piplist2.安裝第三方庫示例下面以在Windows操作系統(tǒng)下安裝NumPy的操作步驟為例,具體說明使用pip在線安裝第三方庫的方法。(1)打開Windows的“命令提示符”窗口。(2)執(zhí)行安裝命令:“pipinstallnumpy”,隨后會顯示安裝過程信息,當出現(xiàn)“Successfullyinstalled…”提示時,代表安裝成功。(3)安裝驗證:可以使用以下方式驗證安裝是否成功,進入Python交互環(huán)境(IDLE),在提示符后輸入如右上所示代碼4.2.3模塊導入Python通過模塊化架構實現(xiàn)代碼復用,提供三種標準導入模塊方式:方式1:import模塊名[as別名]#導入標準庫math>>>importmath

#使用math模塊中的sqrt函數(shù)

>>>result=math.sqrt(16)

>>>print(result)

4.0

#導入標準庫random,并設置別名為m>>>importrandom

asm

#使用別名調用函數(shù)獲得[1,100]區(qū)間的一個隨機整數(shù)>>>result=m.randint(1,100)

>>>print(result)#每次運行結果不同36

>>>importnumpyasnp>>>print(np._version_)2.2.3#輸出版本號即成功方式2:from模塊名import函數(shù)/類/變量名[as別名]#從math模塊中導入sqrt函數(shù)>>>frommathimportsqrt#直接使用sqrt函數(shù),無須像importmath時寫math.sqrt>>>result=sqrt(9)>>>print(result)3.0#輸出結果#從datetime模塊中導入datetime類并起別名dt,datetime模塊用于處理日期和時間>>>fromdatetimeimportdatetimeasdt>>>now=dt.now()>>>print(now)2025-04-1112:38:54.236840

#輸出結果

方式3:from模塊名import*實際開發(fā)中應謹慎使用。>>>frommathimport*

#從math模塊導入所有內容#可直接使用pi(圓周率常量)和sin(正弦函數(shù))等>>>print(pi)3.141592653589793

#輸出結果>>>print(sin(pi/2))1.0#輸出結果4.3Python代碼規(guī)范及幫助4.3.1Python代碼規(guī)范1.縮進在Python中,代碼之間的邏輯關系是依靠代碼塊的縮進量來表示的,縮進結束就表示一個代碼塊結束。#正確的縮進x=9y=20if(x>y):

print('max=',x)else:

print('max=',y)2.注釋Python代碼注釋規(guī)范主要有兩種形式。(1)單行注釋以“#”開始,表示本行#之后的內容為注釋。是單行注釋,常放在某語句后面,也可以單獨成一行。(2)多行注釋包含在一對三引號'''…'''或"""…"""之間且不屬于任何語句的內容將被解釋器認為是注釋。#使用腳本式執(zhí)行方式#三引號中間的內容為多行注釋"""輸出結果:012345"""foriinrange(5):

#循環(huán)輸出數(shù)字0-5

print(i,end='')3.導入模塊規(guī)則每個import語句只導入一個模塊,盡量避免一次導入多個模塊。4.必要的空格與空行在運算符兩側、函數(shù)參數(shù)之間、逗號兩側建議使用空格分開。5.盡量不要寫過長的語句如果語句過長,可以考慮拆分成多個短一些的語句。如果一行語句確實太長,可以在行尾加上反斜杠“\”來換行分成多行,建議使用圓括號將多行內容括起。4.3.2使用幫助Python自帶了大量關于庫及函數(shù)的說明文檔,可以使用help()函數(shù)來獲取幫助信息。靈活使用幫助文檔對學習Python語言至關重要。使用格式如下:help(對象)如果使用help查看內置函數(shù)和類型的幫助信息,可以在IDLE環(huán)境下輸入以下命令,即可查看指定的內置函數(shù)的信息,例如:>>>help(max)

#獲取max()函數(shù)的幫助信息如果需要查看模塊中成員函數(shù)信息,可以先用import導入該模塊,再用help查看其某個成員函數(shù)的信息,例如:>>>importos>>>help(os.fdopen)如果需要查看整個模塊的信息,可以先用import導入該模塊,再用help查看整個模塊的幫助信息,例如:>>>importmath>>>help(math)4.4Python基本輸入/輸出4.4.1Python基本輸出1.基本語法與用法格式為:print([輸出項,…][,sep=分隔符][,end=結束符])>>>print('hello','world')helloworld

#輸出結果為helloworld>>>print('hello','world',sep=',')hello,world

#輸出結果為hello,worldprint('************')print('hello','world')print('************')#保存執(zhí)行后的輸出結果為:************helloworld************#如果結束符指定為空,則不輸出換行符,例如:print('************',end='')print('hello','world',end='')print('************')#輸出為:************helloworld************print("姓名","年齡","分數(shù)",sep="|",end="\n---\n")print("張三",20,85.5,sep="|")#輸出結果為:#姓名|年齡|分數(shù)#---#張三|20|85.5#print函數(shù)支持同時輸出多個內容,用逗號分隔,例如:>>>name="Alice">>>age=30>>>print("Mynameis",name,"andI'm",age,"yearsold")MynameisAliceandI'm30yearsold#輸出結果2.格式化輸出(1)格式化占位符輸出(%操作符)用于對輸出數(shù)據(jù)進行格式化,能在字符串中插入變量值,指定變量類型和輸出格式,如指定小數(shù)點位數(shù)、輸出寬度和填充字符等。在字符串中用%s(字符串)、%d(整數(shù))、%f(浮點數(shù))等占位符,后面參數(shù)提供實際值。>>>print("Number:%d,Pi:%f"%(100,3.14159))Number:100,Pi:3.141590

#輸出結果>>>name="Bob">>>age=28

>>>print("Mynameis%sandI'm%dyearsold."%(name,age))

MynameisBobandI'm28yearsold.

#輸出結果(2)格式化輸出(str.format()方法)str.format()方法提供了較為靈活的格式化方式。支持位置參數(shù)(按順序對應占位符)和關鍵字參數(shù)(通過指定關鍵字來對應占位符),還能指定填充字符、對齊方式、寬度、精度等格式化選項。適用于需要精細控制輸出格式,或使用多個變量且可能重復使用的場景。>>>num=100>>>pi=3.1415926#{0}是位置參數(shù)占位符,對應format方法中第一個參數(shù)num#{1:.2f}也是位置參數(shù)占位符,其中:.2f

表示將對應參數(shù)(這里是pi)格式化為保留兩位小數(shù)的浮點數(shù)>>>print("Number:{0},Pi:{1:.2f}".format(num,pi))Number:100,Pi:3.14

#輸出結果#位置參數(shù)示例>>>print("Thenumberis{},andtheletteris{}".format(10,'a'))Thenumberis10,andtheletterisa

#輸出結果

#關鍵字參數(shù)示例>>>print("Name:{name},Age:{age}".format(name="Bob",age=30))Name:Bob,Age:30#輸出結果#指定寬度和填充字符,左對齊,寬度為10,用'-'填充>>>print("'{:-<10s}'".format("hello"))'hello-----'

#輸出結果#指定精度,保留兩位小數(shù)>>>price=9.999>>>print("Price:{:.2f}".format(price))Price:10.00#輸出結果(3)格式化字符串常量輸出(f-string)Python3.6引入,在字符串前加上f(或F),字符串中的大括號{}內可直接嵌入表達式,Python會自動計算表達式的值并插入到相應位置。這種方式簡潔直觀,且在處理變量和表達式時效率較高,支持復雜表達式,能讓代碼更易讀和編寫。>>>name="Alice">>>age=25>>>height=1.65#嵌入變量>>>print(f"Mynameis{name},andI'm{age}yearsold.")MynameisAlice,andI'm25yearsold.#輸出結果#嵌入表達式>>>print(f"Theresultof3+5is{3+5}.")Theresultof3+5is8.#輸出結果#格式化數(shù)值,保留兩位小數(shù)>>>print(f"Myheightis{height:.2f}meters.")Myheightis1.65meters.#輸出結果4.4.2Python基本輸入input函數(shù)實現(xiàn)交互式輸入,其一般格式為:變量=input("提示字符串:"),例如:user_input=input("請輸入一些內容:") #獲取用戶輸入print("你輸入的內容是:",user_input) #輸出用戶輸入的內容input函數(shù)返回值始終為字符串類型,如果需要其他類型的數(shù)據(jù)(如整數(shù)或浮點數(shù)),可以通過int()、float()等內置函數(shù)進行顯式類型轉換。#獲取整數(shù)輸入age=int(input("請輸入你的年齡:"))

#獲取浮點數(shù)輸入height=float(input("請輸入你的身高(米):"))print("你的年齡是:",age)print("你的身高是:",height)

4.5常量和變量4.5.1常量常量是在程序運行過程中其值不發(fā)生改變也不能改變的字面值常量,如123、12.34、“abcd”等都是字面值常量>>>PI=3.1415926>>>radius=5>>>area=PI*(radius**2)>>>print(f"半徑為{radius}的圓面積為{area}")半徑為5的圓面積為78.539815#輸出結果4.5.2變量變量是在程序運行過程中其值可以發(fā)生變化的量。1.變量的名稱Python中標識符的命名規(guī)則如下:(1)標識符的第一個字符是字母或下劃線,不能是數(shù)字。(2)標識符由字母、數(shù)字和下劃線組成。(3)大小寫敏感,標識符區(qū)分大小寫,如student_name和student_Name是兩個不同的標識符。(4)標識符中不能包含空格、@、%以及$等特殊字符。(5)不建議使用系統(tǒng)內置的模塊名、類型名或函數(shù)名以及已導入的模塊名及其成員名作為標識符,這將會改變其類型和含義,可以通過“dir(__builtins__)”查看所有內置對象名稱。(6)不能使用關鍵字。可以使用keyword模塊打印關鍵字>>>importkeyword>>>print(keyword.kwlist)

#輸出的當前版本的關鍵字['False','None','True','and','as','assert','async','await','break','class','continue','def','del','elif','else','except','finally','for','from','global','if','import','in','is','lambda','nonlocal','not','or','pass','raise','return','try','while','with','yield']Python是一種動態(tài)語言,關鍵字列表也可能會更改,可以利用keyword.iskeyword()函數(shù)判斷標識符是否為關鍵字。>>>importkeyword>>>print(keyword.iskeyword('and'))True>>>print(keyword.iskeyword('And'))FalsePython標識符有一些命名的慣例,Python對標識符的長度沒有嚴格限制,但建議標識符名稱不要過長,以便于閱讀和理解。雖然Python允許使用Unicode字符集中的任何字符來命名標識符(例如中文),但出于代碼可讀性和兼容性的考慮,建議使用ASCII字符集中的字符來命名標識符。類型命名約定示例變量/函數(shù)/方法蛇形命名法(snake_case)全小寫,單詞間用下劃線分隔student_count常量全大寫蛇形命名法(UPPER_SNAKE_CASE)MAX_CONNECTIONS類名駝峰命名法(CamelCase)首字母大寫,無下劃線DataParser3.變量的值Python是一種動態(tài)類型語言,不僅變量的值可以改變,變量的類型也可以改變,可以使用“typy(變量名)”獲取變量的數(shù)據(jù)類型。#變量定義與賦值>>>x=10

#變量x為整型>>>y=3.14

#變量y為浮點型>>>name="Alice"#變量name為字符串型>>>is_valid=True#變量is_valid為布爾型#變量重新賦值>>>x=10

#變量x為整型,值為10>>>x=20

#變量x為整型,x的值從10變?yōu)?0>>>type(x)

#內置函數(shù)type()用來查看變量的類型<class'int'>

#輸出:變量x的類型為整型>>>x="Hello"

#變量x的類型從整數(shù)變?yōu)樽址?gt;>>type(x)<class'str'>

#輸出:變量x的類型為字符串2.變量的類型在Python語言中,不需要顯式指定變量的類型,給變量賦值即指定了該變量的類型,變量的類型取決于變量值的數(shù)據(jù)類型。在Python中,采用動態(tài)類型系統(tǒng),變量本質是對內存對象的引用標識。Python中,函數(shù)id()可以返回指定對象的地址,id()函數(shù)的返回值并不固定,但其返回值一定為整數(shù)。>>>a=256 #創(chuàng)建int對象256,變量a指向該對象>>>b=a #變量b與a共享同一對象引用>>>print(id(a)==id(b))True #輸出True>>>a+=1 #創(chuàng)建新int對象257,a指向新對象>>>print(id(a)==id(b))False #輸出False4.6Python數(shù)據(jù)類型4.6.1數(shù)字型Python常見的數(shù)字類型如下所示,其中可變性指對象創(chuàng)建后值是否可修改。類型名稱描述示例可變性注意事項int整數(shù)42,

-100不可變小整數(shù)(-5~256)駐留優(yōu)化float浮點數(shù)3.14,

-0.5e3不可變注意浮點精度問題,如

0.1+0.2!=0.3complex復數(shù)(實部

+虛部)1+2j,

3j不可變虛部后綴為

j

Jbool布爾值True,

False不可變繼承自

int,True(1),

False(0)1.整型數(shù)(int)整型數(shù)據(jù)通常被稱為整數(shù),可以是正整數(shù)或負整數(shù),不帶小數(shù)點。2.浮點型(float)表示帶小數(shù)點的數(shù)值,支持小數(shù)或科學計數(shù)法兩種表示方式。由于精度的問題,浮點數(shù)運算可能會有一定的誤差,應盡量避免在浮點數(shù)之間進行相等性測試,應該以二者之差的絕對值是否足夠小來作為兩個浮點數(shù)是否相等的依據(jù)。>>>a=10

#沒有前綴表示十進制>>>b=0b1010

#前綴0b表示二進制>>>c=0o12

#前綴0o或0O表示八進制>>>d=0xA

#前綴0x表示十六進制>>>a=3.14

#小數(shù)形式表示>>>print(a)

#輸出a的值為3.143.14>>>b=3.14e2

#科學計數(shù)法表示,相當于b=3.14*102>>>print(b)

#輸出b的值為314.0314.0>>>a=0.1+0.2>>>b=0.3>>>tolerance=1e-9>>>is_equal=abs(a-b)<tolerance>>>print(is_equal)True#輸出結果3.復數(shù)類型(complex)復數(shù)由實部(real)和虛部(imag)構成,在Python中,復數(shù)的虛部以j或J作為后綴,格式為:a+bj,其中a表示實部,b表示虛部。>>>b=2+4j>>>print(b,type(b))(2+4j)<class'complex'>>>>T=True>>>print(T+4)5>>>F=False>>>print(F-4)-44.布爾型(bool)在Python3中,bool是int的子類,只有True(表示真)和False(表示假)兩種值,可以和數(shù)字相加,True(1)、False(0)。除直接給變量賦值True和False外,還可以用bool(X)來創(chuàng)建布爾型變量。>>>a="">>>b="hello">>>print(bool(a))False>>>print(bool(b))True1.字符串的創(chuàng)建Python中可以使用單引號、雙引號、三單引號、三雙引號作為定界符來表示字符串。當文本包含某類引號時,應選擇不同類型的定界符,避免轉義。三引號支持跨行定義且保留換行符>>>s1='Hello'

#使用單引號作為定界符>>>s2="Python"

#使用雙引號作為定界符>>>print(s1,s2,sep='')HelloPython#正確示例>>>msg="It'saPythonstring"

#雙引號包含單引號>>>html='<ahref="index.html">'

#單引號包含雙引號#錯誤示例(需轉義)>>>bad_str='It\'sastring'

#需轉義單引號#多行文本>>>poem='''靜夜思…床前明月光,…疑是地上霜。'''>>>print(poem)靜夜思床前明月光,疑是地上霜。2.索引和切片獲取字符串子串可以通過索引和切片操作獲取字符串的子串。索引用于獲取單個字符,切片用于獲取由連續(xù)字符組成的子串。Python中索引位置從0開始,切片語法為:“變量[start:end:step]”,其規(guī)則是:包含起始索引start、不包含結束索引end、按step步長間隔取值,默認為1,可省略步長參數(shù)。>>>x='hellopython'>>>print(x)

#輸出原始字符串hellopython>>>print(x[2:5])

#切片操作(索引2到5,但不包含5)llo>>>print(x[8])

#獲取索引8的字符h3.字符串操作常見的內置方法Python還提供了一些方法支持對字符串的操作,常見的內置方法有:(1)capitalize():把句首的字母大寫。(2)split():把句子分成單詞。(3)find(x):找到給定詞x在句中的索引,找不到返回-1。(4)replace(x,y):把句中x替換成y。(5)count():用于統(tǒng)計字符串或列表中某個元素出現(xiàn)的次數(shù)。>>>x='hellopython'>>>print(x.capitalize())Hellopython>>>x='hellopythonprogramming'>>>print(x.find('python'))6>>>print(x.find('world'))-1>>>x='hellopythonprogramming'>>>print(x.replace('programming','language'))hellopythonlanguage>>>s='helloworld'>>>print(s.count('l'))3轉義字符描述\\反斜杠符號\'單引號\"雙引號\n換行符\t水平制表符\r回車符\b退格(Backspace)\f換頁符\v垂直制表符\a響鈴(ASCIIBEL字符)\ooo八進制值表示的字符(如\123表示字符S)\xhh十六進制值表示的字符(如\x41表示字符A)\(行尾)續(xù)行符(用于代碼換行時保持語法連續(xù))>>>print('\101\n\x42\nC')ABC>>>print("續(xù)行符示例:這是一個非常長的字符串,\可以換行書寫。")續(xù)行符示例:這是一個非常長的字符串,可以換行書寫。4.Python的轉義字符需要使用特殊字符時,可以用反斜杠(\)轉義字符,Python的轉義字符如下表所示。5.Python字符串運算符Python字符串的常用運算符如下表所示。運算符描述+字符串連接*重復輸出字符串[]通過索引獲取字符串中的字符[:]提取字符串的子序列in成員運算符,如果字符串中包含給定的字符則返回Truenotin成員運算符,如果字符串中不包含給定的字符則返回True>>>a='Hello'>>>b='World'>>>print(a+b)HelloWorld>>>print(a*2)

HelloHello>>>print(a[2])l>>>print(a[0:3])Hel>>>print('H'ina)True>>>print('H'notina)False注意:(1)字符串不可變性:所有運算符操作均生成新字符串,原字符串不變。(2)類型匹配:+和*要求操作數(shù)類型正確,如str+int會報錯。(3)大小寫敏感:比較運算符區(qū)分大小寫,如"A"!="a"。(4)Unicode碼點:字符比較基于Unicode值,如'A'(65)<'a'(97)。類型名稱描述示例可變性注意事項list有序序列[1,"a"],

[]可變支持動態(tài)擴展/收縮tuple有序序列(1,"a"),

(3.14,)不可變單元素元組需加逗號(如

(x,))dict無序鍵值對集合{'a':1},

dict(x=1)可變鍵必須是可哈希對象set無序唯一元素的集合{1,2},

set()可變元素必須是可哈希對象4.6.3列表、元組、字典、集合列表(list)、元組(tuple)、字典(dict)、集合(set)是Python中常用的數(shù)據(jù)類型,很多復雜的業(yè)務邏輯最終由這些基本數(shù)據(jù)類型來實現(xiàn),下表比較了它們之間的區(qū)別,有關這些數(shù)據(jù)類型的詳細使用請參考第5章相關內容。1.列表(list)列表是Python中最基本的數(shù)據(jù)結構,用于存儲一系列有序的項目。列表中的項目可以是不同類型的數(shù)據(jù)。使用英文方括號[]作為定界符,元素之間用逗號分隔。創(chuàng)建列表后,可以隨時增刪或修改里面的內容,列表里的元素可以是數(shù)字、字符串、布爾值,甚至其他列表,用數(shù)字索引(從0開始)獲取元素,支持正數(shù)和負數(shù)索引。>>>numbers=[10,20,30,40]

#創(chuàng)建列表對象>>>print(numbers[0])

#輸出10(第一個元素)10>>>print(numbers[-1])

#輸出40(最后一個元素)402.元組(tuple)元組與列表類似,但元組是不可變的,意味著一旦創(chuàng)建,其內容不能被修改。元組通常用于存儲固定不變的數(shù)據(jù)集合。用圓括號()定義,元素之間用逗號分隔。如果只有一個元素,需要加逗號如(5,),支持不同類型,元組可以包含數(shù)字、字符串、列表等任意類型,和列表一樣,用數(shù)字索引,從0開始獲取元素。>>>x_tuple=(4,5,6)

#創(chuàng)建元組對象>>>print(x_tuple[2])

#使用下標訪問元組中指定位置的元素63.字典(dict)字典是一種存儲鍵值對的數(shù)據(jù)結構,用花括號{}定義,每個元素由“鍵:值”組成,鍵和值之間用冒號分隔。鍵必須是不可變類型,如字符串、數(shù)字、元組,值可以是任意類型??梢酝ㄟ^鍵快速訪問值,鍵不可重復,值可重復,如果鍵重復,后面的值會覆蓋前面的值,可以隨時添加或刪除鍵值對。>>>x_dict={'A':65,'B':66,'C':67}

#創(chuàng)建字典對象>>>print(x_dict['A'])

#字典對象的下標是“鍵”654.集合(set)集合是一個無序的、不包含重復元素的數(shù)據(jù)結構。使用花括號“{}”作為定界符,集合會自動去重,且支持數(shù)學上的集合運算(如交集、并集)。元素沒有固定順序,不支持索引訪問??占现荒苡胹et()方法定義,不能直接使用“{}”定義。集合的元素必須不可變,不能包含列表或字典,但可以包含元組。>>>x_set={7,8,9}

#創(chuàng)建集合對象>>>print(7inx_set)

#成員測試True#自動去重>>>names={"小明","小紅","小明"}>>>print(names)

{'小明','小紅'}

#輸出{"小明","小紅"}4.7運算符與表達式運算符功能說明例子+算術加法,列表、元組、字符串合并與連接,正號3+6=9-算術減法,集合差集,相反數(shù)6-2=4*算術乘法,序列重復2*3=6/除法6/2=3.0%模運算符或求余運算符7%2=1**冪運算2**2=4//整除,其結果是將商的小數(shù)點后的數(shù)舍去7//2=3,7.0//2.0=3.04.7.1運算符1.算術運算符Python語言的算術運算符如下表所示。(1)“+”運算符“+”運算符除了用于算術加法和表示正號以外,還可以用于列表、元組、字符串的連接。>>>[1,2,3]+[4,5,6]

#連接兩個列表

[1,2,3,4,5,6]>>>

(1,2,3)+(4,5)

#連接兩個元組

(1,2,3,4,5)>>>'hello'+'python'

#連接兩個字符串'hellopython'但不支持不同類型對象之間相加或連接。例如:>>>'A'+2

#拋出異常,不支持不同類型對象相加>>>{1,2,3,4,5}-{2,3,5}

#集合的差集運算{1,4}(3)“*”運算符“*”運算符除了表示算術乘法,還可以用于列表、元組、字符串這幾個類型的對象與整數(shù)的乘法,表示序列元素的重復,生成新的列表、元組或字符串。>>>

(1,2,3)*2

#元組與整數(shù)相乘,得到新元組(1,2,3,1,2,3)>>>'hello'*2

#字符串與整數(shù)相乘,得到新的字符串'hellohello'(2)“-”運算符“-”運算符除了用于算術減法和相反數(shù)以外,還可以用于集合的差集運算。>>>-11//3-42.比較運算符比較運算符也稱關系運算符,用于對兩變量或表達式的結果進行比較,若結果為真,則返回True,若結果為假,則返回False。常用的關系運算符如下表所示。運算符功能說明例子結果==等于3==4False!=不等于3!=4True>大于3>4False<小于3<4True>=大于等于3>=4False<=小于等于3<=4True(4)“//”運算符:“//”運算符有“向下取整”的特點。3.邏輯運算符邏輯運算符主要用于某些條件判斷。and是邏輯與運算符,二元運算符,and兩端的條件均為真時,結果才為真。or是邏輯或運算符,二元運算符,or兩端的條件只要有一個條件為真,結果即為真。not是邏輯非運算符,一元運算符,not后的條件為真,結果為假,not后的條件為假,結果為真。運算符功能說明例子結果and邏輯與TrueandTrueTrueor邏輯或TrueorFalseTruenot邏輯非notTrueFalsePython中,將非0的數(shù)值、非空的數(shù)據(jù)類型等價于True,0或空類型等價為False。Python邏輯運算符遵循短路求值(Short-CircuitEvaluation)機制:(1)and返回第一個使表達式為假的值,若全為真則返回最后一個值,如10and0返回0(2)or返回第一個使表達式為真的值,若全為假則返回最后一個值,如10or0返回10(3)not 始終返回布爾值(True/False),如not5返回False>>>print(bool(-10))

#True(非零數(shù)值)True>>>print(bool(""))

#True(非空字符串,空格也視為非空)True>>>print(bool([]))

#False(空列表)False>>>print(bool({}))

#False(空字典)False>>>print(2or3or1)

#返回第一個真值22>>>print(0and"data")

#返回第一個假值004.賦值運算符Python中,使用“=”進行賦值,一般格式為:variable=expression。#將表達式的3.14159*2*2計算結果賦值為變量area>>>area=3.14159*2*2

>>>5=x

#錯誤,常量不可作為左值>>>len("test")=3

#錯誤,函數(shù)調用結果不可修改>>>x+2=10

#錯誤,表達式不可作為左值Python允許“=”與其他算術運符組合成復合賦值運算符,Python主要的賦值運算符如下表所示。假設c=10,a=2。運算符功能說明例子結果=直接賦值運算符c=ac的值為2+=加法賦值運算符c+=a相當于c=c+a,c的值為12-=減法賦值運算符c-=a相當于c=c-a,c的值為8*=乘法賦值運算符c*=a相當于c=c*a,c的值為20/=除法賦值運算符c/=a相當于c=c/a,c的值為5.0%=取模賦值運算符c%=a相當于c=c%a,c的值為0**=冪賦值運算符c**=a相當于c=c**a,c的值為100//=整除賦值運算符c//=a相當于c=c//a,c的值為55.位運算符位運算符是對操作數(shù)按其二進制形式逐位進行運算,主要作用于整數(shù)類型(int),布爾值(bool)作為int子類也可參與運算(True=1,F(xiàn)alse=0),但運算結果為int類型。運算符名稱運算規(guī)則說明&按位與二進制數(shù)1&1=1,1&0=0,0&1=0,0&0=0|按位或二進制數(shù)1|1=1,1|0=1,0|1=1,0|0=0^按位異或二進制數(shù)1^1=0,1^0=1,0^1=1,0^0=0~按位取反二進制數(shù)

~1=0,~0=1<<左移高位溢出丟棄,低位補0,左移

n位等價于數(shù)學運算

a*(2**n)>>右移低位溢出丟棄,高位補符號位(算術右移),右移

n

位等價于數(shù)學運算:a//(2**n)>>>print(5<<2)

#5*4=20->0b101->

0b10100->20

20>>>print(-3<<3)

#-3*8=-24->補碼運算后結果為-24(符號位保留)-24>>>print(16>>2)

#16/4=4→0b10000→0b100→4

4>>>print(-8>>1)

#-8/2=-4→補碼運算后結果為-4(符號位保留)-46.成員運算符成員運算符用于判斷指定序列中是否包含某個值,即測試一個對象是否為另一個對象的元素,成員運算符如下表所示。運算符功能說明示例運算結果in如果在指定序列中找到值,則返回True,否則返回False5in[1,2,3,4]Falsenotin如果在指定序列中找到值,則返回False,否則返回True5notin[1,2,3,4]True7.標識運算符標識運算符用于比較兩個對象的內存地址,返回值為布爾型。標識運算符如下所示。運算符示例功能說明isxisy如果變量x和變量y指向相同的對象,則返回True,否則為Falseisnotxisnoty如果變量x和變量y指向不同的對象,則返回True,否則為False“xisz”其實等同于“id(x)==id(z)”,如果引用的是同一個對象,則返回True,否則返回False。>>>x=20>>>y=30>>>z=20>>>print(xisz)True>>>print(xisnoty)True>>>print(yisz)False8.常見運算符的優(yōu)先級當一個表達式中出現(xiàn)多種不同的運算符時,先執(zhí)行具有較高優(yōu)先級的運算,然后執(zhí)行較低優(yōu)先級的運算。Python常見運算符優(yōu)先級從高到低如下表所示。運算符優(yōu)先級()括號顯式控制優(yōu)先級**冪運算(右結合,如

2**3**2=2^(3^2)=512)+x,-x,~x一元正負、按位取反*,/,//,%乘、除、整除、取模+,-加、減<<,>>位移運算&按位與^按位異或|按位或<,<=,>,>=,!=,==比較運算符not邏輯非and邏輯與or邏輯或#優(yōu)先級綜合示例>>>result=5

+5*2**3//4#運算順序分解:#1.2**3=8#2.5*8=40#3.40//4=10#4.5+10=15>>>print(result)

#輸出1515#括號強制改變優(yōu)先級>>>value=(3+5)*(2**3)>>>print(value)

64

注意:(1)建議使用()顯式定義優(yōu)先級以避免歧義。(2)冪運算符“**”是唯一右結合的核心運算符。(3)比較運算符鏈式寫法具有特殊邏輯。#鏈式比較等價于and連接>>>print(1<2<3)

#

等價于1<2and2<3True4.7.2表達式表達式是使用運算符將變量、常量及函數(shù)等運算對象按照一定的規(guī)則連接起來的式子,表達式經過運算得到一個確定的值。input_year=int(input("請輸入一個年份:"))if(input_year%4==0andinput_year%100!=0)or(input_year%400==0):

print(f"{input_year}是閏年")else:

print(f"{input_year}不是閏年")程序運行結果如下:請輸入一個年份:20242024是閏年4.8程序控制語句4.8.1分支結構1.單分支if語句單分支if語句的格式如下:if<條件表達式>:代碼塊注意:代碼塊要采用縮進格式,不要遺漏條件表達式后面的“冒號”?!纠?-1】輸入一個整數(shù),判斷它是否是三位數(shù)。思路:根據(jù)三位數(shù)的區(qū)間范圍[100,999],比較輸入數(shù)字與100和999之間的大小關系。num=int(input("請輸入一個整數(shù):"))ifnum>=100andnum<=999:

print(f"{num}是三位數(shù)")2.雙分支if語句雙分支if語句的格式if<條件表達式>:代碼塊1else:代碼塊2注意:代碼塊要采用縮進格式,不要遺漏條件表達式和else后面的“冒號”?!纠?-2】

輸入一個整數(shù),判斷它是奇數(shù)還是偶數(shù)。思路:根據(jù)余數(shù)判斷該數(shù)是奇數(shù)還是偶數(shù),如果這個數(shù)能被2整除(余數(shù)為0)則是偶數(shù),否則是奇數(shù)。num=int(input("輸入一個數(shù)字:"))if(num%2)==0:

print(f"{num}是偶數(shù)")else:

print(f"{num}是奇數(shù)")【例4-3】輸入2個數(shù),找出較大者。思路:比較變量a和b的大小,如果a小于b則最大值為b,否則最大值為a。a=float(input("請輸入實數(shù)a:"))b=float(input("請輸入實數(shù)b:"))ifa<b:max=belse:max=aprint(f"a、b中較大值為:{max}")3.多分支if語句當判斷條件為多個值時,可以使用多分支if語句,其語法結構如下:if條件表達式1:代碼塊1……elif條件表達式2:代碼塊2…………elif條件表達式n:代碼塊n……[else:

代碼塊n+1……]說明:(1)“表達式”可以是關系表達式、邏輯表達式,也可以是各種類型的數(shù)據(jù)。對于數(shù)值型數(shù)據(jù),非0為True,0為False。對于字符串或者集合類數(shù)據(jù),空字符串和空集合為False,其余為True。(2)elif是“elseif”的縮寫,elif子句可以有1~n個。表達式else后面冒號(:)不能省略,關鍵字if、elif、else縮進相同。(3)代碼塊1、代碼塊2、…、代碼塊N+1必須有相同的縮進。(4)else分支可以省略。【例4-4】編程計算一元二次方程ax2+bx+c=0的根。思路:計算d=b2-4ac。如果d>0,有兩個不同實根x=?b±d2a;如果d=0,有一個實根x=?b2a;如果d<0,無實根。importmatha=float(input("請輸入一元二次方程的系數(shù)a:"))b=float(input("請輸入一元二次方程的系數(shù)b:"))c=float(input("請輸入一元二次方程的系數(shù)c:"))d=b*b-4*a*cifd>0:

x1=(-b+math.sqrt(d))/(2*a)

x2=(-b-math.sqrt(d))/(2*a)

print(f"方程有兩個不同實根:{x1}、{x2}")elifd==0:

x=-b/(2*a)

print(f"方程有一個實根:{x}")else:print("方程無實根")4.if語句嵌套這3種if語句可以互相嵌套,使用時要注意嵌套if語句的縮進和對齊。常見的if語句的嵌套形式有在單分支的if語句中嵌套雙分支if語句,或在雙分支if語句中嵌套雙分支if語句結構,如下圖所示。【例4-5】輸入3個數(shù),找出最大值。思路:先比較前兩個數(shù)的大小,根據(jù)比較結果再與第3個數(shù)比較,然后確定最大值,本例采用if語句的嵌套結構。a=int(input("請輸入實數(shù)a:"))b=int(input("請輸入實數(shù)b:"))c=int(input("請輸入實數(shù)c:"))if(a>=b):

if(a>=c):

mx=a

else:

mx=celse:

if(b>=c):

mx=b

else:

mx=cprint("最大值為:",mx)4.8.2循環(huán)結構1.for循環(huán)for循環(huán)語句的基本格式:for循環(huán)變量in遍歷結構:代碼塊注意:代碼塊要采用縮進格式,不要遺漏遍歷結構后的“冒號”。遍歷結構可以是字符串、range()函數(shù)、組合類型數(shù)據(jù)或文件等,本節(jié)先介紹字符串、range()函數(shù)作為遍歷結構。(1)字符串作為遍歷結構【例4-6】統(tǒng)計字符串中小寫字母的個數(shù)。思路:使用for循環(huán)遍歷字符串,使用islower()函數(shù)判斷字母是否是小寫字母。count=0forletterin'Python':

#遍歷字符串

print("當前字母:",letter)

ifletter.islower():

count=count+1print(f"共有小寫字母{count}個")程序的輸出結果為:當前字母:P當前字母:y當前字母:t當前字母:h當前字母:o當前字母:n共有小寫字母5個(2)range()函數(shù)作為遍歷結構range()函數(shù)可以通過3種方式產生遍歷序列。range(n):可產生序列:0,1,2,3,??,???1range(m,n):可產生序列:??,??+

溫馨提示

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

評論

0/150

提交評論