Python基礎(chǔ)案例教程PPT完整全套教學(xué)課件_第1頁
Python基礎(chǔ)案例教程PPT完整全套教學(xué)課件_第2頁
Python基礎(chǔ)案例教程PPT完整全套教學(xué)課件_第3頁
Python基礎(chǔ)案例教程PPT完整全套教學(xué)課件_第4頁
Python基礎(chǔ)案例教程PPT完整全套教學(xué)課件_第5頁
已閱讀5頁,還剩209頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Python基礎(chǔ)案例教程Lesson_01_計(jì)算機(jī)基礎(chǔ)知識Lesson_02_Python入門Lesson_03_流程控制語句Lesson_04_序列Lesson_05_函數(shù)Lesson_06_對象Lesson_07_異常和文件Lesson_08_項(xiàng)目實(shí)戰(zhàn)全套PPT課件計(jì)算機(jī)基礎(chǔ)知識講師:本講目標(biāo)計(jì)算機(jī)簡介Windows命令行環(huán)境變量進(jìn)制文本文件和字符集計(jì)算機(jī)簡介計(jì)算機(jī):用于計(jì)算的機(jī)器,根據(jù)人類的指令來完成各種操作。計(jì)算機(jī)由兩部分組成:硬件和軟件通過軟件來對計(jì)算機(jī)進(jìn)行各種操作(注意:軟件中并不是所有的功能都會對用戶開放,用戶需要調(diào)用軟件提供的接口(Interface交互界面)來操作計(jì)算機(jī))什么是硬件什么是軟件Windows命令行命令行就是文本交互界面通過命令行可使用一個一個的指令來操作計(jì)算機(jī)任何的計(jì)算機(jī)的操作系統(tǒng)中都包含有命令行(windows、linux、macOS)

進(jìn)入命令行操作:

win+R進(jìn)入運(yùn)行窗口

錄入cmd后回車環(huán)境變量操作系統(tǒng)中的一些變量環(huán)境變量用戶環(huán)境變量系統(tǒng)環(huán)境變量環(huán)境變量的配置添加環(huán)境變量修改環(huán)境變量刪除環(huán)境變量(path環(huán)境變量的配置)練習(xí)練習(xí)1:進(jìn)入到環(huán)境變量界面,創(chuàng)建一個USERNAME環(huán)境變量,修改USERNAME環(huán)境變量,并嘗試添加多個值,然后刪除USERNAME環(huán)境變量練習(xí)2:在桌面創(chuàng)建一個hello文件夾,文件中創(chuàng)建一個abc.txt輸入隨意的內(nèi)容然后將hello的路徑添加到path環(huán)境變量中,嘗試在任意位置訪問abc.txt最后將hello路徑從path環(huán)境變量中刪除進(jìn)制十進(jìn)制:滿十進(jìn)一的機(jī)制(實(shí)際生活)十進(jìn)制一共有10個數(shù)字0123456789二進(jìn)制:滿二進(jìn)一的機(jī)制(計(jì)算機(jī))十進(jìn)制一共有2個數(shù)字01八進(jìn)制:滿八進(jìn)一的機(jī)制(很少使用)八進(jìn)制一共有8個數(shù)字01234567十六進(jìn)制:滿十六進(jìn)一的機(jī)制(查看二進(jìn)制數(shù)據(jù))十六進(jìn)制一共有16個數(shù)字0123456789ab

c

d

e

f

文本文件和字符集文本文件純文本:只能保存單一的文本內(nèi)容富文本:可以保存文本以外的內(nèi)容(顏色、圖片等)

在開發(fā)時,編寫程序使用的全都是純文本!純文本在計(jì)算機(jī)底層也會轉(zhuǎn)換為二進(jìn)制保存文本文件和字符集字符集ASCII:美國人編碼,使用7位對美國常用的字符進(jìn)行編碼,包含128個字符。ISO-8859-1:歐洲的編碼,使用8位,包含256個字符。GB2312:中國國家標(biāo)準(zhǔn)總局1980年發(fā)布的編碼格式。GBK:國標(biāo)碼,中國的編碼。Unicode:萬國碼,包含世界上幾乎所有的語言和符號

編寫程序時一般都會使用Unicode編碼。Unicode編碼有多種實(shí)現(xiàn),UTF-8(常用)UTF-16UTF-32。亂碼:編碼格式和解碼格式不一致時,需檢查字符集是否正確Python基礎(chǔ)講師:本講目標(biāo)計(jì)算機(jī)語言Sublime工具的使用Python基礎(chǔ)介紹基本概念基礎(chǔ)語法字面量和常量變量和標(biāo)識符數(shù)據(jù)類型類型檢查對象類型轉(zhuǎn)換運(yùn)算符計(jì)算機(jī)語言計(jì)算機(jī)是用于計(jì)算的機(jī)器,根據(jù)人類的指令來完成各種操作低級語言機(jī)器語言匯編語言高級語言PythonCC++C#JavaJavaScript低級語言如:機(jī)器語言、匯編語言。機(jī)器語言:是一種指令集的體系。這種指令集,稱機(jī)器碼(machinecode),是電腦的CPU可直接解讀的數(shù)據(jù)。通過二進(jìn)制編碼來編寫程序執(zhí)行效率高,但編寫起來太麻煩.匯編語言:匯編語言(assemblylanguage)是一種用于電子計(jì)算機(jī)、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。在匯編語言中,用助記符(Mnemonics)代替機(jī)器指令的操作碼,用地址符號(Symbol)或標(biāo)號(Label)代替指令或操作數(shù)的地址。只適用于某些硬件,兼容性比較差高級語言高級語言:

是較接近自然語言和數(shù)學(xué)公式的編程,基本脫離了機(jī)器的硬件系統(tǒng),用人們更易理解的方式編寫程序。編寫的程序稱之為源程序。分類:

高級語言并不是特指的某一種具體的語言,而是包括很多編程語言,如流行的C、C++、C#、Java、JavaScript、Python...Python語言Python是一個高層次的結(jié)合了解釋性、編譯性、互動性和面向?qū)ο蟮哪_本語言。具有很強(qiáng)的可讀性,相比其他語言經(jīng)常使用英文關(guān)鍵字,其他語言的一些標(biāo)點(diǎn)符號,它具有比其他語言更有特色語法結(jié)構(gòu)常見運(yùn)用:WEB應(yīng)用(Facebook)、爬蟲程序、科學(xué)計(jì)算、自動化運(yùn)維、大數(shù)據(jù)、桌面軟件/游戲人工智能開發(fā)環(huán)境下載安裝包python-3.6.5.exe3.x2.xPython和Sublime的整合在Sublime中CTRL+B執(zhí)行Python代碼,但在某些版本的Sublime中對中文支持不好,并且不能使用input()函數(shù)使用SublimeREPL來執(zhí)行python代碼

安裝完成,設(shè)置快捷鍵[F5]則自動執(zhí)行當(dāng)前的Python代碼{"keys":["f5"],"caption":"SublimeREPL:Python","command":"run_existing_window_command","args":{"id":"repl_python_run","file":"config/Python/Main.sublime-menu"}}SublimeText3是一個文本編輯器,也是一個代碼編輯器SublimeText具有漂亮的用戶界面和強(qiáng)大的功能,例如代碼縮略圖,Python的插件,代碼段等。還可自定義鍵綁定菜單和工具欄SublimeText是一個跨平臺的編輯器,同時支持Windows、Linux、MacOSX等操作系統(tǒng)SublimeText3安裝使用PackageControl是SublimeText3中的插件通過該插件可以向Sublime中安裝新的包。練習(xí)安裝SublimeText3,在Sublime中安裝PackageControl通過PackageControl安裝Sublime的中文語言包

嘗試為你的Sublime安裝新的主題練習(xí)練習(xí)1:嘗試創(chuàng)建一個py文件,并向文件中寫入python打印語句(print...),之后執(zhí)行該文件?;靖拍畋磉_(dá)式:語句:完成某種功能,比如打印信息、獲取信息、為變量賦值例如:print()、input()、a=10程序:

是由一條一條的語句和一條一條的表達(dá)式構(gòu)成的函數(shù)(function):

是一種語句,函數(shù)專門用來完成特定的功能基本語法嚴(yán)格區(qū)分大小寫每一行就是一條語句,每條語句以換行結(jié)束每一行語句不要過長(規(guī)范中建議每行不要超過80個字符"rulers":[80]一條語句可以分多行編寫,多行編寫時語句后邊以\結(jié)尾縮進(jìn)嚴(yán)格的語言,不要隨便寫縮進(jìn)使用#來表示注釋,#后的內(nèi)容都屬于注釋(解釋說明)例如:1,2,3,‘HELLO’,字面量所表示的意思,就是它的字面的值的意思,在程序中可以直接使用字面量字面量和變量字面量在計(jì)算機(jī)科學(xué)中,是用于表達(dá)源代碼中一個固定值的表示法。字面量就是一個一個的值。

變量可以用來保存字面量,并且變量中保存的字面量是不定的,變量本身沒有任何意思,它會根據(jù)不同的字面量表示不同的意思。注意:一般我們在開發(fā)時,很少直接使用字面量,都是將字面量保存到變量中,通過變量來引用字面量變量是計(jì)算機(jī)語言中儲存計(jì)算結(jié)果或能表示值的抽象概念。在指令式語言中,變量通常是可變的注意:不能使用沒有進(jìn)行過賦值的變量變量和標(biāo)識符變量(Python)不需要聲明,直接為變量賦值即可為變量賦任意類型的值,也可以任意修改變量的值標(biāo)識符(Python)所有可以自主命名的內(nèi)容都屬于標(biāo)識符。例如:變量名、函數(shù)名、類名。變量和標(biāo)識符標(biāo)識符的使用規(guī)范標(biāo)識符中可以含有字母、數(shù)字、_,但是不能使用數(shù)字開頭

例如:a_1_a1_1a標(biāo)識符不能是Python中的關(guān)鍵字和保留字,同時也不建議使用Python中的函數(shù)名作為標(biāo)識符,因?yàn)檫@樣會導(dǎo)致函數(shù)被覆蓋。命名規(guī)范:在Python中注意遵循兩種命名規(guī)范:

a.下劃線命名法:所有字母小寫,單詞之間使用_分割。

例如:max_lengthmin_lengthhello_worldxxx_yyy_zzzb.帕斯卡命名法(駝峰命名法):首字母大寫,

每個單詞首字母大寫,其余字母小寫。

例如:MaxLengthMinLengthHelloWorldXxxYyyZzz注意:如果使用不符合標(biāo)準(zhǔn)的標(biāo)識符,將會報(bào)錯SyntaxError:invalidsyntax。練習(xí)練習(xí)1:定義幾個變量(復(fù)雜一些,嘗試不同的命名法),然后打印這些變量。數(shù)據(jù)類型數(shù)值整型int浮點(diǎn)型float復(fù)數(shù)complex布爾bool字符串空值Python中有六大基本類型數(shù)字、字符串、元組、列表、字典、集合數(shù)據(jù)類型數(shù)值整型:在Python中所有的整數(shù)都是int類型,整數(shù)的大小沒有限制

(10進(jìn)制的數(shù)字不能以0開頭)如果數(shù)字的長度過大,可以使用下劃線作為分隔符。

例如:c=123_456_789浮點(diǎn)型:浮點(diǎn)數(shù)也稱為小數(shù),在Python中所有的小數(shù)都是float類型

例如:c=1.23c=4.56復(fù)數(shù):由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成,可以用a+bj,或者complex(a,b)表示,復(fù)數(shù)的實(shí)部a和虛部b都是浮點(diǎn)型。例如:4.53e-7j數(shù)據(jù)類型字符串定義:字符串是由數(shù)字、字母、下劃線組成的一串字符,

它是編程語言中表示文本的數(shù)據(jù)類型

使用:在Python中字符串用來表示一段文本信息,字符串是程序中使用的最多的數(shù)據(jù)類型。使用字符串需要使用引號引起來。引號可以是雙引號,也可以是單引號。例如:s='hello's=“hello”轉(zhuǎn)義字符:可以使用\作為轉(zhuǎn)義字符

例如:

\"表示“\t表示制表符\n表示換行符\\表示反斜杠數(shù)據(jù)類型字符串強(qiáng)化“+”號拼接:將兩個字符串進(jìn)行相加,則會自動將兩個字符串拼接為一個。例如:a='haha'+'哈哈'。打印時:print("a="+a)多個參數(shù):在“+”號拼接的打印語句中,如果出現(xiàn)非字符串類型的變量,就會報(bào)錯。為了避免這種情況,就有“,”號拼接。例如:a='haha'+'哈哈'。打印時:print("a=",a)占位符:%s在字符串中表示任意字符%f浮點(diǎn)數(shù)占位符,可以進(jìn)位%d整數(shù)占位符,直接舍去小數(shù)位通過在字符串前添加一個f來創(chuàng)建一個格式化字符串,在格式化字符串中可以直接嵌入變量。例如:c=f'hello{a}'數(shù)據(jù)類型字符串強(qiáng)化格式化字符串字符串的賦值將字符串和數(shù)字相乘?!?”在Python語言中表示乘法,如果將字符串和數(shù)字相乘,則解釋器會將字符串重復(fù)指定的次數(shù)并返回,返回的結(jié)果需要重新賦值接收。例如:a=‘a(chǎn)’*20print(a)True表示真-False表示假a=Truea=Falseprint('a=‘,a)布爾值實(shí)際上也屬于整型True就相當(dāng)于1,F(xiàn)alse就相當(dāng)于0數(shù)據(jù)類型布爾值(bool)None專門用來表示不存在。例如:b=Noneprint(b)空值(None)練習(xí)練習(xí)1:創(chuàng)建一個變量保存你的名字,然后通過四種格式化字符串的方式,在命令行中顯示,歡迎xxx光臨!###參考答案:使用四種方式來輸出,歡迎xxx光臨name='孫悟空’print('歡迎'+name+'光臨!')#-拼串print('歡迎',name,'光臨!')#-多個參數(shù)print('歡迎%s光臨!'%name)#-占位符print(f'歡迎{name}光臨!')#-格式化字符串type()函數(shù)用來檢查值的類型,該函數(shù)會將檢查的結(jié)果作為返回值返回,可以通過變量來接收函數(shù)的返回值。類型預(yù)覽:print(type(1))<class'int'>print(type(1.5))<class'float'>print(type(True))<class'bool'>print(type('hello'))<class'str'>print(type(None))<class'NoneType'>類型檢查類型檢查可以檢查變量中存儲的值的類型一切皆對象!Python是一門面向?qū)ο蟮恼Z言程序運(yùn)行中,所有的數(shù)據(jù)都是存儲到內(nèi)存當(dāng)中然后再運(yùn)行對象就是內(nèi)存中專門用來存儲指定數(shù)據(jù)的一塊區(qū)域。對象實(shí)際上就是一個容器,專門用來存儲數(shù)據(jù)。像數(shù)值、字符串、布爾值、None都是對象。對象概念對象分類可變對象(值可變)不可變對象(值不可變)每個對象中都要保存三種數(shù)據(jù)(id,type,value)id(標(biāo)識)每一個對象都有唯一的id可以通過id()函數(shù)來查看對象的idid是由解析器CPython生成的,id就是對象的內(nèi)存地址對象一旦創(chuàng)建,則它的id永遠(yuǎn)不能再改變對象結(jié)構(gòu)對象的簡易內(nèi)存圖

type(類型)類型用來標(biāo)識當(dāng)前對象所屬的類型

類型決定了對象有哪些功能通過type()函數(shù)來查看對象的類型

強(qiáng)類型語言,一旦創(chuàng)建類型不能修改value(值)值就是對象中存儲的具體的數(shù)據(jù)對于有些對象值是可以改變的變量和對象對象并沒有直接存儲到變量中,在Python中變量更像是給對象起了一個別名,變量中存儲的不是對象的值,而是對象的id(內(nèi)存地址)使用變量時,實(shí)際上就是在通過對象id在查找對象變量中保存的對象,只有在為變量重新賦值時才會改變。變量和變量之間是相互獨(dú)立的,修改一個變量不會影響另一個變量變量和對象的關(guān)系圖int()將對象轉(zhuǎn)換為整型

布爾值:True->1False->0

浮點(diǎn)數(shù):直接取整,省略小數(shù)點(diǎn)后的內(nèi)容

字符串:合法的整數(shù)字符串,直接轉(zhuǎn)換為對應(yīng)的數(shù)字float()將對象轉(zhuǎn)換為浮點(diǎn)數(shù)-布爾值:True->1.0False->0.0

整數(shù):在數(shù)字后加.0

字符串:合法的小數(shù)字符串,直接轉(zhuǎn)換為對應(yīng)的數(shù)字str()將對象轉(zhuǎn)換為字符串

True->'True’False->'False’123->'123'bool()將對象轉(zhuǎn)換為布爾值

任何對象都可以轉(zhuǎn)換為布爾值類型轉(zhuǎn)換類型轉(zhuǎn)換,將一個類型的對象轉(zhuǎn)換為其他對象。類型轉(zhuǎn)換不是改變對象本身的類型,而是根據(jù)當(dāng)前對象的值創(chuàng)建一個新對象運(yùn)算符是對一個值或多個值進(jìn)行運(yùn)算或各種操作運(yùn)算符概念分類算術(shù)運(yùn)算符賦值運(yùn)算符比較運(yùn)算符(關(guān)系運(yùn)算符)邏輯運(yùn)算符條件運(yùn)算符(三元運(yùn)算符)+加法運(yùn)算符(如果是兩個字符串之間進(jìn)行加法運(yùn)算,則會進(jìn)行拼串操作)-減法運(yùn)算符*乘法運(yùn)算符(如果將字符串和數(shù)字相乘,則會對字符串進(jìn)行復(fù)制操作,將字符串重復(fù)指定次數(shù))/除法運(yùn)算符,運(yùn)算時結(jié)果總會返回一個浮點(diǎn)類型//整除,只會保留計(jì)算后的整數(shù)位,總會返回一個整型**冪運(yùn)算,求一個值的幾次冪%取模,求兩個數(shù)相除的余數(shù)運(yùn)算符算術(shù)運(yùn)算符賦值運(yùn)算符=可以將等號右側(cè)的值賦值給等號左側(cè)的變量幾種特殊的賦值運(yùn)算符:+=:a+=5相當(dāng)于a=a+5-=:a-=5相當(dāng)于a=a-5*=:a*=5相當(dāng)于a=a*5**=:a**=5相當(dāng)于a=a**5/=:a/=5相當(dāng)于a=a/5//=:a//=5相當(dāng)于a=a//5%=:a%=5相當(dāng)于a=a%5關(guān)系運(yùn)算符用來比較兩個值之間的關(guān)系,結(jié)果返回一個布爾值。如果關(guān)系成立,返回True,否則返回False幾種常見的關(guān)系運(yùn)算符:>(<):比較左側(cè)值是否大于(小于)右側(cè)>=(<=):比較左側(cè)值是否大于(小于)或等于右側(cè)值==(!=):比較兩個對象的值是否相等(不相等)相等和不等比較的是對象的值,而不是idIs(isnot):比較兩個對象是否是(不是)同一個對象,比較的是對象的id運(yùn)算符關(guān)系運(yùn)算符運(yùn)算符邏輯運(yùn)算符邏輯運(yùn)算符主要用來做一些邏輯判斷

not邏輯非、and邏輯與(短路與)、or邏輯或(短路或)邏輯運(yùn)算符可以連著使用result=1<2<3非布爾值的與或運(yùn)算

當(dāng)我們對非布爾值進(jìn)行與或運(yùn)算時,Python會將其當(dāng)做布爾值運(yùn)算,最終會返回原值與運(yùn)算的規(guī)則與運(yùn)算是找False的,如果第一個值是False,則不看第二個值如果第一個值是False,則直接返回第一個值,否則返回第二個值或運(yùn)算的規(guī)則或運(yùn)算是找True的,如果第一個值是True,則不看第二個值如果第一個值是True,則直接返回第一個值,否則返回第二個值result=1and2#2 result=1and2#2result=1or0#1 result=0orNone#None運(yùn)算符條件運(yùn)算符(三元運(yùn)算符)語法:語句1if條件表達(dá)式else語句2a=30b=50#獲取a和b之間的較大值max=aifa>belseb運(yùn)算符的優(yōu)先級運(yùn)算符的優(yōu)先級可以根據(jù)優(yōu)先級的表格來查詢在表格中位置越靠下的運(yùn)算符優(yōu)先級越高,優(yōu)先級越高的越優(yōu)先計(jì)算如果優(yōu)先級一樣則自左向右計(jì)算在開發(fā)中如果遇到優(yōu)先級不清楚的,則可以通過小括號來改變運(yùn)算順序練習(xí)練習(xí)1(邏輯運(yùn)算符):嘗試一下對布爾值進(jìn)行三種邏輯運(yùn)算嘗試對非布爾值進(jìn)行三種邏輯運(yùn)算,并觀察返回的結(jié)果練習(xí)2(條件運(yùn)算符):現(xiàn)在有abc三個變量,三個變量中分別保存有三個數(shù)值,請通過條件運(yùn)算符獲取三個值中的最大值流程控制講師:本講目標(biāo)條件判斷語句循環(huán)語句條件判斷語句-if語句if語句語法:if條件表達(dá)式:

代碼塊(一組代碼)執(zhí)行的流程:執(zhí)行時,會先對條件表達(dá)式進(jìn)行求值判斷,如果為True,則執(zhí)行if后的語句;如果為False,則不執(zhí)行。默認(rèn)情況下,if語句只會控制緊隨其后的那條語句,如果希望if可以控制多條語句,則可以在if后跟一個代碼塊。條件判斷語句:if語句示例代碼可以使用邏輯運(yùn)算符來連接多個條件,如果希望所有條件同時滿足,則需要使用and,如果希望只要有一個條件滿足即可,則需要使用or。方式一: ifnum>10andnum<20: print('num比10大,num比20?。?)方式二: if10<num<20: print('num比10大,num比20?。?)input函數(shù)該函數(shù)用來獲取用戶的輸入input()調(diào)用后,程序會等待用戶輸入,用戶輸入完內(nèi)容以后,點(diǎn)擊回車程序才會繼續(xù)向下執(zhí)行,用戶輸入完成以后,其所輸入的的內(nèi)容會以返回值的形式返回。input()也可以用于暫時阻止程序結(jié)束。注意:input()的返回值是一個字符串,input()函數(shù)中可以設(shè)置一個字符串作為參數(shù),這個字符串將會作為提示文字顯示例如:a=input('請輸入任意內(nèi)容:’)print('用戶輸入的內(nèi)容是:',a)條件判斷語句:if-elseIf-else語句語法:if條件表達(dá)式:

代碼塊 else:

代碼塊執(zhí)行的流程:執(zhí)行時,先對if后的條件表達(dá)式進(jìn)行求值判斷,如果為True,則執(zhí)行if后的代碼塊,如果為False,則執(zhí)行else后的代碼塊條件判斷語句:if-else示例代碼age=7ifage>17: print('你已經(jīng)成年了~~’)else: print('你還未成年~~')條件判斷語句:if-elif-elseIf-elif-else語句語法:if條件表達(dá)式:

代碼塊 elif條件表達(dá)式:

代碼塊 elif條件表達(dá)式:

代碼塊 else:

代碼塊執(zhí)行的流程:執(zhí)行時,會自上向下依次對條件表達(dá)式進(jìn)行求值判斷,如果表達(dá)式的結(jié)果為True,則執(zhí)行當(dāng)前代碼塊,然后語句結(jié)束;如果表達(dá)式的結(jié)果為False,則繼續(xù)向下判斷,直到找到True為止如果所有的表達(dá)式都是False,則執(zhí)行else后的代碼塊條件判斷語句:if-elif-else示例代碼age=210ifage>200:print('活著可真沒勁呢!')elifage>=60:print('你已經(jīng)退休了!')elifage>=30:print('你已經(jīng)是中年了!')elifage>=18:print('你已經(jīng)成年了!')else:print('你還是個小孩!')練習(xí)練習(xí)1(if語句):在命令行讓用戶輸入一個用戶名,獲取用戶輸入,并進(jìn)行判斷,如果用戶輸入的用戶名是admin,則顯示歡迎管理員光臨;如果用戶輸入的是其他的用戶名,則什么也不做練習(xí)2(if-else語句):在命令行讓用戶輸入一個用戶名,獲取用戶輸入,并進(jìn)行判斷,如果用戶輸入的用戶名是admin,則顯示歡迎管理員光臨;如果用戶輸入的是其他的用戶名,則顯示歡迎普通用戶光臨。練習(xí)3:編寫一個程序,獲取一個用戶輸入的整數(shù)。然后通過程序顯示這個數(shù)是奇數(shù)還是偶數(shù)練習(xí)練習(xí)4:編寫一個程序,檢查任意一個年份(用戶輸入)是否是閏年,如果一個年份可以被4整除不能被100整除,或者可以被400整除,這個年份就是閏年。練習(xí)5:我家的狗5歲了,5歲的狗相當(dāng)于多大年齡的人呢?狗的前兩年每一年相當(dāng)于人類的10.5歲,然后每增加一年就增加四歲。編寫一個程序,獲取用戶輸入的狗的年齡,然后通過程序顯示其相當(dāng)于人類的年齡。強(qiáng)化:讓用戶輸入狗狗的年齡,如果用戶輸入負(fù)數(shù),請顯示一個提示信息;如果是正數(shù),計(jì)算狗狗的年齡練習(xí)練習(xí)6:從鍵盤輸入小明的期末成績:-當(dāng)成績?yōu)?00時,'獎勵一輛BMW’-當(dāng)成績?yōu)閇80-99]時,'獎勵一臺iphone’-當(dāng)成績?yōu)閇60-79]時,'獎勵一本參考書’-其他時,什么獎勵也沒有循環(huán)語句:while循環(huán)while循環(huán)語句語法:while條件表達(dá)式:

代碼塊 else:

代碼塊執(zhí)行的流程:執(zhí)行時,會先對while后的條件表達(dá)式進(jìn)行求值判斷,如果判斷結(jié)果為True,則執(zhí)行循環(huán)體(代碼塊)循環(huán)體執(zhí)行完畢,繼續(xù)對條件表達(dá)式進(jìn)行求值判斷,以此類推,直到判斷結(jié)果為False,則循環(huán)終止。如果循環(huán)有對應(yīng)的else,則執(zhí)行else后的代碼塊循環(huán)語句:while循環(huán)循環(huán)的三個要件(表達(dá)式)初始化表達(dá)式:通過初始化表達(dá)式初始化一個變量條件表達(dá)式:條件表達(dá)式用來設(shè)置循環(huán)執(zhí)行的條件更新表達(dá)式:修改初始化變量的值條件表達(dá)式恒為True的循環(huán)語句,稱為死循環(huán),它會一直運(yùn)行,慎用!例如:whileTrue:

print('hello')循環(huán)語句:while循環(huán)示例代碼#創(chuàng)建一個執(zhí)行十次的循環(huán)i=0whilei<10:i+=1print(i,'hello')else:print('else中的代碼塊')循環(huán)語句循環(huán)嵌套#在控制臺中打印如下圖形*************************#創(chuàng)建一個循環(huán)來控制圖形的高度#循環(huán)嵌套時,外層循環(huán)沒執(zhí)行一次,內(nèi)存循環(huán)就要執(zhí)行一圈i=0whilei<5:#創(chuàng)建一個內(nèi)層循環(huán)來控制圖形的寬度j=0whilej<5:print("*",end='')j+=1print()i+=1循環(huán)語句循環(huán)嵌套#在控制臺中打印如下圖形***************分析:*j<1i=0**j<2i=1***j<3i=2****j<4i=3*****j<5i=4代碼:i=0whilei<5:j=0whilej<i+1:print("*",end='')j+=1print()i+=1循環(huán)語句break用來立即退出循環(huán)語句(包括else)創(chuàng)建一個5次的循環(huán)i=0whilei<5:ifi==3:breakprint(i)i+=1else:print('循環(huán)結(jié)束')循環(huán)語句continue用來跳過當(dāng)次循環(huán)i=0whilei<5:i+=1ifi==2:continueprint(i)else:print('循環(huán)結(jié)束')注意:break和continue都是只對離他最近的循環(huán)起作用循環(huán)語句pass是用來在判斷或循環(huán)語句中占位的,沒有任何實(shí)際意義例如:i=0ifi<5:pass練習(xí)練習(xí)1(while循環(huán)):求100以內(nèi)所有的奇數(shù)之和練習(xí)2(while循環(huán)):求100以內(nèi)所有7的倍數(shù)之和,以及個數(shù)。練習(xí)3(while循環(huán)):水仙花數(shù)是指一個n位數(shù)(n≥3),它的每個位上的數(shù)字的n次冪之和等于它本身(例如:1**3+5**3+3**3=153)。求1000以內(nèi)所有的水仙花數(shù)練習(xí)練習(xí)4(while循環(huán)):獲取用戶輸入的任意數(shù),判斷其是否是質(zhì)數(shù)。質(zhì)數(shù)是只能被1和它自身整除的數(shù),1不是質(zhì)數(shù)也不是合數(shù)練習(xí)5(循環(huán)嵌套):打印99乘法表

1*1=11*2=22*2=41*3=32*3=63*3=9...9*9=81練習(xí)6(循環(huán)嵌套):求100以內(nèi)所有的質(zhì)數(shù)。

for變量in序列:

代碼塊循環(huán)語句:for循環(huán)for循環(huán)語句語法說明for循環(huán)的代碼塊會執(zhí)行多次,每執(zhí)行一次就會將序列中的一個元素賦值給變量,所以可以通過變量來獲取列表中的元素循環(huán)語句:for循環(huán)示例代碼#創(chuàng)建一個序列fruits=['banana','apple','mango']#遍歷序列forsinfruits:print(s)序列講師:本講目標(biāo)列表及列表的使用序列及序列的分類序列的使用可變對象字典集合列表概念列表是Python中的一個對象列表中可以保存多個有序的數(shù)據(jù)。列表是用來存儲對象的對象,列表中存儲的數(shù)據(jù),

稱之為元素

使用列表中的對象都會按照插入的順序存儲到列表中,第一個插入的對象保存到第一個位置,第二個保存到第二個位置,我們可以通過索引(index)來獲取列表中的元素列表創(chuàng)建列表1)通過[]來創(chuàng)建列表my_list=[]#創(chuàng)建了一個空列表4)列表中可以保存任意的對象my_list=[10,'hello',True,None,[1,2,3],print]2)一個列表中可以存儲多個元素,也可以在創(chuàng)建列表時,來指定列表中的元素my_list=[10]#創(chuàng)建一個只包含一個元素的列表

3)當(dāng)向列表中添加多個元素時,多個元素間使用,隔開#如下創(chuàng)建了一個包含有5個元素的列表my_list=[10,20,30,40,50]索引概念索引是元素在列表中的位置索引是從0開始的整數(shù),列表第一個位置索引為0,第二個位置索引為1,第三個位置索引為2,以此類推……列表的索引可以是負(fù)數(shù)。如果索引是負(fù)數(shù),則從后向前獲取元素,-1表示倒數(shù)第一個,-2表示倒數(shù)第二個,以此類推……列表[索引]語法索引示例代碼#創(chuàng)建一個列表my_list=[10,20,30,40,50]#通過索引獲取列表中的元素print(my_list[4])#如果使用的索引超過了最大的范圍,會拋出異常#print(my_list[5])IndexError:listindexoutofrange#使用負(fù)數(shù)索引#print(stus[-2])切片概念切片指從現(xiàn)有列表中,獲取一個子列表。做切片操作時,總會返回一個新的列表,不會影響原來的列表。起始和結(jié)束位置的索引都可以省略不寫語法列表[起始:結(jié)束:步長]通過切片獲取元素時,會包括起始位置的元素,不會包括結(jié)束位置的元素。步長表示,每次獲取元素的間隔,默認(rèn)值是1切片示例代碼#創(chuàng)建一個列表stus=['孫悟空','豬八戒','沙和尚','唐僧','蜘蛛精','白骨精']#如果省略結(jié)束位置,則會一直截取到最后#print(stus[1:])#如果省略起始位置,則會從第一個元素開始截取#print(stus[:3])#如果起始位置和結(jié)束位置全部省略,則相當(dāng)于創(chuàng)建了一個列表的副本#print(stus[:])#步長不能是0,但是可以是負(fù)數(shù),如果是0會拋出異常#print(stus[::0])ValueError:slicestepcannotbezero#如果是負(fù)數(shù),則會從列表的后部向前邊取元素print(stus[::-1])函數(shù)函數(shù)方法說明+將兩個列表拼接為一個列表*將列表重復(fù)指定的次數(shù)in檢查指定元素是否存在于列表中。如果存在,返回True,否則返回Falsenotin檢查指定元素是否步驟列表中。如果不在,返回True,否則返回Falselen()獲取列表的長度,列表中元素的個數(shù)。獲取到的長度的值,是列表的最大索引+1min()獲取列表中的最小值max()獲取列表中的最大值方法概念列表方法和函數(shù)基本上是一樣,只不過方法必須通過【對象.方法()】的形式調(diào)用語法xxx.method()對象.方法名()方法實(shí)際上是和對象關(guān)系緊密的函數(shù)方法index()方法獲取指定元素在列表中的第一次出現(xiàn)時索引示例代碼#創(chuàng)建一個列表stus=['孫悟空','豬八戒','沙和尚','唐僧','白骨精','沙和尚','沙和尚']#檢查stus列表中有沒有“沙和尚”print(stus.index('沙和尚'))#如果要獲取列表中沒有的元素,會拋出異常#print(stus.index('牛魔王'))ValueError:'牛魔王'isnotinlist#index()的第二個參數(shù),表示查找的起始位置,第三個參數(shù),表示查找的結(jié)束位置,包括開始,不包括結(jié)束。print(stus.index('沙和尚',3,7))方法count()方法統(tǒng)計(jì)指定元素在列表中出現(xiàn)的次數(shù)示例代碼print(stus.count('牛魔王'))結(jié)果為0print(stus.count('沙和尚'))結(jié)果為3練習(xí)練習(xí)1:創(chuàng)建一個列表,在列表中保存你最好的5個朋友的名字,然后分別通過索引來獲取每一個朋友的名字序列概念序列(sequence)是Python中最基本的一種數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)指計(jì)算機(jī)中數(shù)據(jù)存儲的方式,序列用于保存一組有序的數(shù)據(jù),所有的數(shù)據(jù)在序列當(dāng)中都有一個唯一的位置(索引)。序列中的數(shù)據(jù)會按照添加的順序來分配索引分類可變序列(序列中的元素可以改變)列表(list)不可變序列(序列中的元素不能改變)字符串(str)元組(tuple)序列修改序列#創(chuàng)建一個列表stus=['孫悟空','豬八戒','沙和尚','唐僧','蜘蛛精','白骨精']1、通過索引直接修改stus[0]='sunwukong'修改后:['sunwukong','豬八戒','沙和尚','唐僧','蜘蛛精','白骨精']2、通過del索引刪除#刪除索引為2的元素delstus[2]修改后:['孫悟空','豬八戒','唐僧','蜘蛛精','白骨精']序列修改序列#創(chuàng)建一個列表stus=['孫悟空','豬八戒','沙和尚','唐僧','蜘蛛精','白骨精’]3、通過切片來修改列表1)在給切片進(jìn)行賦值時,只能使用序列進(jìn)行賦值。#使用新的元素替換舊元素stus[0:2]=['牛魔王','紅孩兒']修改后:['牛魔王','紅孩兒','沙和尚','唐僧','蜘蛛精','白骨精’]#如果新元素的個數(shù)比舊元素多,會依次排列stus[0:2]=['牛魔王','紅孩兒','二郎神']修改后:['牛魔王','紅孩兒','二郎神','沙和尚','唐僧','蜘蛛精','白骨精']序列修改序列#創(chuàng)建一個列表stus=['孫悟空','豬八戒','沙和尚','唐僧','蜘蛛精','白骨精’]3、通過切片來修改列表#使用新的元素替換舊元素stus[::2]=['牛魔王','紅孩兒','二郎神']修改后:['牛魔王','豬八戒','紅孩兒','唐僧','二郎神','白骨精’]#向索引為0的位置插入元素stus[0:0]=['牛魔王']修改后:['牛魔王','孫悟空','豬八戒','沙和尚','唐僧','蜘蛛精','白骨精']序列修改序列#創(chuàng)建一個列表stus=['孫悟空','豬八戒','沙和尚','唐僧','蜘蛛精','白骨精’]通過切片刪除元素#通過切片直接刪除(方式一)delstus[0:2]修改后:['沙和尚','唐僧','蜘蛛精','白骨精']#通過切片直接刪除(方式二)stus[1:3]=[]修改后:['孫悟空','唐僧','蜘蛛精','白骨精']序列修改序列#創(chuàng)建一個列表stus=['孫悟空','豬八戒','沙和尚','唐僧','蜘蛛精','白骨精’]通過切片步長刪除元素delstus[::2]修改后:['豬八戒','唐僧','白骨精']以下操作,只適用于可變序列,如果是不可變序列,無法通過索引來修改。可以通過list()函數(shù)將其他的序列轉(zhuǎn)換為list。例如:s='hello’s=list(s)print(s)序列的方法(只對可變序列使用)方法名稱方法說明append()向列表的最后添加一個元素insert()向列表的指定位置插入一個元素參數(shù):1.要插入的位置2.要插入的元素extend()使用新的序列來擴(kuò)展當(dāng)前序列,需要一個序列作為參數(shù),它會將該序列中的元素添加到當(dāng)前列表中clear()清空序列pop()根據(jù)索引刪除并返回被刪除的元素remove()刪除指定值的元素,如果相同值的元素有多個,只會刪除第一個,沒有返回值reverse()用來反轉(zhuǎn)列表sort()用來對列表中的元素進(jìn)行排序,默認(rèn)是升序

排列(從小到大排序)遍歷for循環(huán)遍歷普通遍歷方式while循環(huán)遍歷forsinstus:print(s)#定義變量i=0whilei<len(stus):print(stus[i])i+=1print(stus[0])print(stus[1])print(stus[2])print(stus[3])EMS員工管理系統(tǒng)練習(xí)1)查詢顯示當(dāng)前系統(tǒng)當(dāng)中的所有員工4)退出退出系統(tǒng)2)添加將員工添加到當(dāng)前系統(tǒng)中3)刪除將員工從系統(tǒng)當(dāng)中刪除思考:員工信息要保存到哪里?-列表,在系統(tǒng)中應(yīng)該有一個列表,專門用來保存所有員工信息range()函數(shù)概念用來生成一個自然數(shù)的序列三個參數(shù)1.起始位置(可以省略,默認(rèn)是0)2.結(jié)束位置3.步長(可以省略,默認(rèn)是1)使用通過range()可以創(chuàng)建一個執(zhí)行指定次數(shù)的for循環(huán)例如:foriinrange(30)元組概念元組(tuple)是一個不可變(數(shù)據(jù)不改變)的序列創(chuàng)建元組#使用()來創(chuàng)建空元組my_tuple=()#創(chuàng)建了一個5個元素的元組my_tuple=(1,2,3,4,5)#當(dāng)元組不是空元組時,括號可以省略my_tuple=10,20,30,40#如果元組不是空元組,它里邊至少要有一個“,”my_tuple=40,元組元組的解包將元組當(dāng)中每一個元素都賦值給一個變量例如:a,b,c,d=my_tuple#通過解包交換兩個數(shù)的值a=100b=300a,b=b,a#在對元組解包時,變量的數(shù)量必須和元組中的元素的數(shù)量一致#如果數(shù)量不一致,可以在變量前邊添加一個*,這樣變量將會獲取元組中所有剩余的元素,并且以列表的方式返回。不能同時出現(xiàn)兩個或以上的*變量。a,b,*c=my_tuplea,*b,c=my_tuple*a,b,c=my_tuple可變對象對象存儲內(nèi)容:每個對象中都保存了三個數(shù)據(jù):

id(標(biāo)識,地址)type(類型)value(值)改對象:a[0]=10(改對象)這個操作是在通過變量去修改對象的值,這種操作不會改變變量所指向的對象。當(dāng)我們?nèi)バ薷膶ο髸r,如果有其他變量也指向了該對象,則修改也會在其他的變量中體現(xiàn)改變量:a=[4,5,6](改變量)這個操作是在給變量重新賦值,這種操作會改變變量所指向的對象。為一個變量重新賦值時,不會影響其他的變量。0說明:一般只有在為變量賦值時才是修改變量,其余的都是修改對字典語法創(chuàng)建字典1、創(chuàng)建一個空字典d={}2、使用dict()函數(shù)來創(chuàng)建字典每一個參數(shù)都是一個鍵值對,參數(shù)名就是鍵,參數(shù)值就是值(這種方式創(chuàng)建的字典,key都是字符串)d=dict(name='孫悟空',age=18,gender='男'){k1:v1,k2:v2,k3:v3}字典語法創(chuàng)建字典3、也可以將一個包含有雙值子序列的序列轉(zhuǎn)換為字典-雙值序列,序列中只有兩個值。例如:[1,2]('a',3)'ab'-子序列,如果序列中的元素也是序列,那么我們就稱這個元素為子序列。例如:[(1,2),(3,5)]d=dict([('name','孫悟飯'),('age',18),('sex',’男’)]){k1:v1,k2:v2,k3:v3}字典獲取字典值1.根據(jù)鍵來獲取值語法:d[key]代碼示例:print(d['age'])2.get()函數(shù)獲取值語法:get(key[,default])代碼示例:print(d.get('name'))注意:如果鍵不存在,會拋出異常KeyError。注意:如果獲取的鍵在字典中不存在,會返回None,也可以指定一個默認(rèn)值來作為第二個參數(shù),這樣獲取不到值時將會返回默認(rèn)值。字典修改字典1.d[key]=value說明:如果key存在則覆蓋,不存在則添加2.setdefault(key[,default])

說明:

可以用來向字典中添加key-value。如果key已經(jīng)存在于字典中,則返回key對應(yīng)的value值,

不會對字典做任何操作;如果key不存在,則向字典中添加這個key,設(shè)置value值,并且返回key對應(yīng)的value值。字典修改字典3.update([other])說明:

將其他的字典中的key-value添加到當(dāng)前字典中,如果有重復(fù)的key,則后邊的會替換到當(dāng)前的4.copy()說明:該方法用于對字典進(jìn)行淺復(fù)制,復(fù)制以后的對象,和原對象是獨(dú)立的,修改一個不會影響另一個。注意,淺復(fù)制會簡單復(fù)制對象內(nèi)部的值,如果值也是一個可變對象,這個可變對象不會被復(fù)制字典刪除字典1.del字典名[key]說明:通過鍵進(jìn)行刪除。如果刪除的key值不存在,會拋出異常2.popitem()說明:隨機(jī)刪除字典中的一個鍵值對,刪除之后,它會將刪除的key-value作為返回值返回。返回的是一個元組,元組中有兩個元素,第一個元素是刪除的key,第二個是刪除的value。當(dāng)使用popitem()刪除一個空字典時,會拋出異常KeyError:'popitem():dictionaryisempty'字典刪除字典3.pop(key[,default])說明:

根據(jù)key刪除字典中的key-value,并且將被刪除的value返回。如果刪除不存在的key,會拋出異常。如果指定了默認(rèn)值,再刪除不存在的key時,不會報(bào)錯,而是直接返回默認(rèn)值4.clear()說明:用來清空字典字典遍歷字典1.keys()說明:該方法會返回字典的所有的key。并且會返回一個序列,序列中保存有字典的所有的鍵2.values()說明:該方法會返回一個序列,序列中保存有字典的左右的值3.items()說明:該方法會返回字典中所有的項(xiàng)。它會返回一個序列,序列中包含有雙值子序列,

雙值分別是,字典中的key和value字典中的常用函數(shù)方法名稱方法說明len()獲取字典中鍵值對的個數(shù)in檢查字典中是否包含指定的鍵notin檢查字典中是否不包含指定的鍵集合定義集合和列表非常相似不同點(diǎn):1.集合中只能存儲不可變對象。2.集合中存儲的對象是無序(不是按照元素的插入順序保存)3.集合中不能出現(xiàn)重復(fù)的元素,重復(fù)的元素會自動去除常用方法方法名稱方法說明set()創(chuàng)建集合len()獲取集合中元素的數(shù)量in/notin判斷值是否存在add()向集合中添加元素,沒有返回值update()將一個集合中的元素添加到當(dāng)前集合中remove()刪除集合中的指定元素,沒有返回值clear()清空集合copy()對集合進(jìn)行淺復(fù)制集合的運(yùn)算運(yùn)算方法說明&交集運(yùn)算|并集運(yùn)算-差集^異或集<=檢查一個集合是否是另一個集合的子集<檢查一個集合是否是另一個集合的真子集>=檢查一個集合是否是另一個的超集>檢查一個集合是否是另一個的真超集函數(shù)講師:本講目標(biāo)函數(shù)簡介函數(shù)參數(shù)函數(shù)式編程函數(shù)簡介函數(shù)也是一個對象對象是內(nèi)容中專門用來存儲數(shù)據(jù)的一塊區(qū)域函數(shù)可以用來保存一些可執(zhí)行的代碼,并且可以在需要時,對這些語句進(jìn)行多次的調(diào)用創(chuàng)建函數(shù)

函數(shù)名命名規(guī)范可以包含字母、數(shù)字、下劃線、但是不能以數(shù)字開頭

def函數(shù)名([形參1,形參2,...形參n]):代碼塊調(diào)用函數(shù)函數(shù)對象()函數(shù)中保存的代碼不會立即執(zhí)行,需要調(diào)用函數(shù)代碼才會執(zhí)行

案例定義函數(shù)#定義一個函數(shù)deffn():print('這是我的第一個函數(shù)!')print('hello')#調(diào)用函數(shù)fn()函數(shù)參數(shù)在定義函數(shù)時,可以在函數(shù)名后的()中定義數(shù)量不等的形參,多個形參之間使用,隔開形參(形式參數(shù)),定義形參就相當(dāng)于在函數(shù)內(nèi)部聲明了變量,但是并不賦值實(shí)參(實(shí)際參數(shù))

如果函數(shù)定義時,指定了形參,那么在調(diào)用函數(shù)時也必須傳遞實(shí)參,

實(shí)參將會賦值給對應(yīng)的形參,簡單來說,有幾個形參就得傳幾個實(shí)參案例帶參函數(shù)#定義函數(shù)時指定形參deffn(a,b): print(a,"+",b,"=",a+b)#調(diào)用函數(shù)fn(10,20)案例帶參函數(shù)-帶默認(rèn)值#定義一個函數(shù)#定義形參時,可以為形參指定默認(rèn)值#指定了默認(rèn)值以后,如果用戶傳遞了參數(shù)則默認(rèn)值沒有任何作用#如果用戶沒有傳遞,則默認(rèn)值就會生效deffn(a=5,b=10,c=20):print('a=',a)print('b=',b)print('c=',c)實(shí)參的傳遞方式-按位置傳參#實(shí)參的傳遞方式#位置參數(shù)#位置參數(shù)就是將對應(yīng)位置的實(shí)參復(fù)制給對應(yīng)位置的形參#第一個實(shí)參賦值給第一個形參,第二個實(shí)參賦值給第二個形參。。。fn(1,2,3)實(shí)參的傳遞方式-按名稱傳參#關(guān)鍵字參數(shù)#關(guān)鍵字參數(shù),可以不按照形參定義的順序去傳遞,而直接根據(jù)參數(shù)名去傳遞參數(shù)fn(b=1,c=2,a=3)#位置參數(shù)和關(guān)鍵字參數(shù)可以混合使用#混合使用關(guān)鍵字和位置參數(shù)時,必須將位置參數(shù)寫到前面fn(1,c=30)函數(shù)的參數(shù)類型deffn(a):print('a=',a)#函數(shù)在調(diào)用時,解析器不會檢查實(shí)參的類型#實(shí)參可以傳遞任意類型的對象b=123b=Trueb='hello'b=Noneb=[1,2,3]fn(b)函數(shù)的參數(shù)deffn(a):#在函數(shù)中對形參進(jìn)行重新賦值,不會影響其他的變量

#a=20#a是一個列表,嘗試修改列表中的元素

#如果形參執(zhí)行的是一個對象,當(dāng)我們通過形參去修改對象時

#會影響到所有指向該對象的變量

a[0]=30print('a=',a,id(a))c=10c=[1,2,3]#fn(c)#fn(c.copy())#print('c=',c,id(c))練習(xí)-練習(xí)1:定義一個函數(shù),可以用來求任意三個數(shù)的乘積-練習(xí)2:定義一個函數(shù),可以根據(jù)不同的用戶名顯示不同的歡迎信息

函數(shù)式編程

在Python中,函數(shù)是一等對象一等對象一般都會具有如下特點(diǎn):

①對象是在運(yùn)行時創(chuàng)建的②能賦值給變量或作為數(shù)據(jù)結(jié)構(gòu)中的元素③能作為參數(shù)傳遞④能作為返回值返回

高階函數(shù)高階函數(shù)至少要符合以下兩個特點(diǎn)中的一個①接收一個或多個函數(shù)作為參數(shù)②將函數(shù)作為返回值返回裝飾器函數(shù)的參數(shù)-不定長參數(shù)一#在定義函數(shù)時,可以在形參前邊加上一個*,這樣這個形參將會獲取到所有的實(shí)參#它將會將所有的實(shí)參保存到一個元組中#*形參只能接收位置參數(shù),而不能接收關(guān)鍵字參數(shù)deffn(*a):print("a=",a,type(a))#定義一個函數(shù),可以求任意個數(shù)字的和defsum(*nums):#定義一個變量,來保存結(jié)果

result=0#遍歷元組,并將元組中的數(shù)進(jìn)行累加

forninnums:result+=nprint(result)函數(shù)的參數(shù)-不定長參數(shù)二#帶星號的形參只能有一個#帶星號的參數(shù),可以和其他參數(shù)配合使用#第一個參數(shù)給a,第二個參數(shù)給b,剩下的都保存到c的元組中deffn(a,b,*c):print('a=',a)print('b=',b)print('c=',c)fn(1,2,3,4,5)函數(shù)的參數(shù)-不定長參數(shù)三#可變參數(shù)不是必須寫在最后,但是注意,帶*的參數(shù)后的所有參數(shù),必須以關(guān)鍵字參數(shù)的形式傳遞#第一個參數(shù)給a,剩下的位置參數(shù)給b的元組,c必須使用關(guān)鍵字參數(shù)deffn(a,*b,c):print('a=',a)print('b=',b)print('c=',c)#所有的位置參數(shù)都給a,b和c必須使用關(guān)鍵字參數(shù)deffn2(*a,b,c):print('a=',a)print('b=',b)print('c=',c)函數(shù)的參數(shù)-不定長參數(shù)四#如果在形參的開頭直接定一個*,則要求所有的參數(shù)必須以參數(shù)名稱的形式傳遞deffn(*,a,b,c): print('a=',a) print('b=',b) print('c=',c)fn(a=30,b=40,c=50)函數(shù)的參數(shù)-不定長參數(shù)**#**形參可以接受其他關(guān)鍵字參數(shù),會將參數(shù)保存到一個字典中#字典的key就是參數(shù)的名字,字典的value就是參數(shù)的值#**只能有一個,并且必須寫到參數(shù)的最后deffn(b,c,**a): print('a=',a,type(a)) print('b=',b) print('c=',c)fn(10,20,d=1,e=2)#按位置fn(a=1,d=2,e=3,b=10,c=20)#按名稱參數(shù)的解包#參數(shù)的解包(拆包)deffn(a,b,c): print('a=',a) print('b=',b) print('c=',c)#創(chuàng)建一個元組或集合作為參數(shù)t=(10,20,30)t={1,2,3}#傳遞實(shí)參數(shù),序列類型的參數(shù)前加*,這樣序列中的元素依次作為參數(shù)傳遞#這里要求序列中的元素個數(shù)必須和形參個數(shù)一致#fn(*t)#普通傳遞#fn((1,2,3),10,20)#創(chuàng)建字典作為參數(shù)d={'a':100,'b':200,'c':300}#fn(**d)函數(shù)的返回值#函數(shù)返回值returndeffn(*nums): result=0 forninnums: result+=n print(result)#fn(100,200,300)#如果函數(shù)中寫多個return,只會執(zhí)行第一個return,后面代碼不執(zhí)行deffn(): #return'Hello' #return'dd' return[1,2,3]文檔字符串#help()是python中的內(nèi)置函數(shù)#通過help()函數(shù)可以查詢Python中的函數(shù)用法#語法help(函數(shù)對象)如help(print)#help(print)deffn(a:int,b:bool,c:str='hello')->int: '''

這是函數(shù)說明

''' return10

help(fn)作用域#在Python中一共有兩種作用域# 全局作用域# -全局作用域在程序執(zhí)行時創(chuàng)建,在程序執(zhí)行結(jié)束時銷毀# -所有函數(shù)以外的區(qū)域都是全局作用域# -在全局作用域中定義的變量,都屬于全局變量,可以在程序的任意位置訪問## 函數(shù)作用域# -函數(shù)作用域在函數(shù)調(diào)用時創(chuàng)建,在調(diào)用結(jié)束時銷毀# -函數(shù)每調(diào)用一次就會產(chǎn)生一個新的函數(shù)作用域# -在函數(shù)作用域中定義的變量,都是局部變量,只能在函數(shù)內(nèi)部訪問## 變量的查找# -使用變量時,會優(yōu)先在當(dāng)前作用域中查找,如果沒有,再上一級作用域中查找案例作用域#函數(shù)內(nèi)部定義新的函數(shù)deffn2(): deffn3(): print('fn3中:','a=',a) fn3()#a=20#fn2()#執(zhí)行結(jié)果a=20deffn3(): a=10 #局部變量

print('fn3函數(shù)內(nèi)部:','a=',a)deffn4(): globala#表示當(dāng)前變量為使用定義好的全局變量

a=50 #此時相當(dāng)于修改全局變量

print('fn4','a=',a)fn4()命名空間#命名空間指的是變量存儲的位置,每一個變量都需要存儲到指定的命名空間中#每個作用域都會有一個它對應(yīng)的命名空間#全局命名空間,用來保存全局變量,函數(shù)命名空間用來保存函數(shù)中的變量#命名空間實(shí)際上就是一個字典,是一個專門用來存儲變量的字典#locals()用來獲取當(dāng)前作用域中命名空間#返回的是字典scope=locals()#print(scope,type(scope))deffn(): a=10 scope=locals() global_scope=globals() global_scope['a']=30 print(scope) print(globals())fn()遞歸#創(chuàng)建一個函數(shù),用來求任意數(shù)的階乘#普通函數(shù)使用循環(huán)實(shí)現(xiàn),編寫簡單,閱讀稍難deffn(n): '''

該函數(shù)用來求任意數(shù)的階乘 參數(shù): n要求階乘的數(shù)字

''' result=n foriinrange(1,n): result*=i returnresult#n=fn(3)#print(n)遞歸#創(chuàng)建一個函數(shù),用來求任意數(shù)的階乘#遞歸函數(shù)編寫難,閱讀方便#遞歸式函數(shù)的兩個要件# 1.基線條件# -問題可以被分解為的最小問題,當(dāng)滿足基線條件時,遞歸就不再執(zhí)行了# 2.遞歸條件# -問題可以繼續(xù)分解的條件deffn(n): ifn==1: return1 returnn*fn(n-1)#print(fn(3))遞歸案例回文數(shù)defhui_wen(s): iflen(s)<2: returnTrue elifs[0]!=s[-1]: returnFalse returns[0]==s[-1]andhui_wen(s[1:-1])print(hui_wen('12321'))高階函數(shù)#高階函數(shù)#接收函數(shù)作為參數(shù),或者將函數(shù)作為返回值的函數(shù)是高階函數(shù)#當(dāng)我們使用一個函數(shù)作為參數(shù)時實(shí)際上是將指定的代碼傳遞進(jìn)了目標(biāo)函數(shù)高階函數(shù)案例#需求取出列表中所有的偶數(shù)并返回#定義一個函數(shù),判斷一個任意的數(shù)字是否是偶數(shù)deffn2(i): ifi%2==0: returnTrue returnFalsedeffn(fnc,lst): new_list=[] forninlst: iffnc(n): new_list.append(n) returnnew_list #print(fn(fn2,l))閉包#閉包#將函數(shù)作為返回值返回,也是一種高階函數(shù)(了解)#這種高階函數(shù)也稱為閉包,通過閉包可以創(chuàng)建一些當(dāng)前函數(shù)能訪問的變量#可以將一些私有的數(shù)據(jù)藏到閉包中deffn(): a=10 definner(): print('a=',a) print('我是內(nèi)部函數(shù)') returninner#r是一個函數(shù),是調(diào)用fn()后返回的函數(shù)#這個函數(shù)是在fn()內(nèi)部定義,并不是全局函數(shù)#所以這個函數(shù)總是能訪問到fn()函數(shù)內(nèi)的變量#r=fn();#r();閉包#閉包使用案例#形成閉包的條件#1.函數(shù)嵌套#2.將內(nèi)部函數(shù)作為返回值#3.內(nèi)部函數(shù)必須要使用到外部函數(shù)的變量閉包案例-求多個數(shù)的平均值defmake_average(): nums=[] defaverage(n): nums.append(n) returnsum(nums)/len(nums) returnaverage#返回函數(shù)#make_average()函數(shù)返回的是內(nèi)部函數(shù)#調(diào)用函數(shù)時,相當(dāng)于調(diào)用的是內(nèi)部函數(shù)average=make_average();#下面每次調(diào)用average(),都會給nums列表中增加數(shù)字,并求平均值#同時,列表nums不會被外部訪問到#print(average(10))#print(average(20))#15裝飾器defbegin_end(old): '''

用來對其他函數(shù)進(jìn)行擴(kuò)展,使其他函數(shù)可以在執(zhí)行前開始打印,執(zhí)行后打印結(jié)束 參數(shù):

old要擴(kuò)展的函數(shù)對象

''' defnew_function(*args,**kwargs): print('開始執(zhí)行..') result=old(*args,**kwargs) print('執(zhí)行結(jié)束..') returnresult returnnew_function #返回新函數(shù)裝飾器-使用@begin_end #這種方式在實(shí)際中常用defsay_hello(): print('大家好')say_hello()對象講師:本講目標(biāo)類和對象封裝繼承多態(tài)模塊什么是對象?對象是內(nèi)存中專門用來存儲數(shù)據(jù)的一塊區(qū)域。對象中可以存放各種數(shù)據(jù)(比如:數(shù)字、布爾值、代碼)對象由三部分組成:1.對象的標(biāo)識(id)2.對象的類型(type)3.對象的值(value)oopPython是一門面向?qū)ο蟮木幊陶Z言所謂的面向?qū)ο蟮恼Z言:簡單理解就是語言中的所有操作都是通過對象來進(jìn)行的容易閱讀,并且比較易于維護(hù),容易復(fù)用

溫馨提示

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

最新文檔

評論

0/150

提交評論