版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第二版第二章Python語言基礎(chǔ)本章要點(diǎn):2.1Python程序概述2.2Python對象和引用2.3標(biāo)識符及其命名規(guī)則2.4表達(dá)式和運(yùn)算符2.5語句2.6函數(shù)和模塊2.7數(shù)據(jù)類型2.8類和對象2.9模塊和包2.10綜合應(yīng)用:turtle模塊和海龜繪圖2.1Python程序概述【例2.1】已知三角形的三條邊,求三角形的面積(area.py)。提示:假設(shè)三條邊長分別為a、b和c,則三角形的面積s=。其中,h為三角形周長的一半importmatha=3.0b=4.0c=5.0h=(a+b+c)/2
#三角形周長的一半s=math.sqrt(h*(h-a)*(h-b)*(h-c))#三角形面積print(s)Python程序構(gòu)成Python程序由模塊組成,模塊對應(yīng)于擴(kuò)展名為.py的源文件。一個(gè)Python程序由一個(gè)或者多個(gè)模塊構(gòu)成。例2.1程序由模塊area.py和內(nèi)置模塊math組成。模塊由語句組成。模塊即Python源文件。運(yùn)行Python程序時(shí),按模塊中語句順序,依次執(zhí)行語句。例2.1程序中,importmath為導(dǎo)入模塊語句;print(s)為調(diào)用函數(shù)表達(dá)式語句;其余為賦值語句。語句是Python程序的過程構(gòu)造塊,用于創(chuàng)建對象、變量賦值、調(diào)用函數(shù)、控制分支、創(chuàng)建循環(huán)、增加注釋等。語句包含表達(dá)式。例2.1程序中,語句importmath用導(dǎo)入math模塊,并依次執(zhí)行其中的語句;在語句“a=3.0”中,字面量表達(dá)式3.0創(chuàng)建一個(gè)值為3.0的float型對象,并綁定到變量a;在語句“h=(a+b+c)/2”中,算術(shù)表達(dá)式(a+b+c)/2運(yùn)算結(jié)果為一個(gè)新的float型對象,并綁定到變量h;“#”引導(dǎo)注釋語句;在語句print(s)中,調(diào)用內(nèi)置函數(shù)print(),輸出對象s的值。表達(dá)式用于創(chuàng)建和處理對象。在例2.1程序的語句“s=math.sqrt(h*(h-a)*(h-b)*(h-c))”中,表達(dá)式h*(h-a)*(h-b)*(h-c)的運(yùn)算結(jié)果為一個(gè)新的float對象,math.sqrt調(diào)用模塊math中的sqrt()函數(shù),計(jì)算參數(shù)對象的平方根。Python程序可以分解為模塊、語句、表達(dá)式和對象。概念上,其對應(yīng)關(guān)系如下:2.2Python對象和引用Python3中,一切皆為對象每個(gè)對象由標(biāo)識(identity)、類型(type)和值(value)標(biāo)識數(shù)據(jù)表示為對象對象本質(zhì)上是一個(gè)內(nèi)存塊,擁有特定的值,支持特定類型的運(yùn)算操作Python中的對象(1)類型(type)用于表示對象所屬的數(shù)據(jù)類型(類),數(shù)據(jù)類型(類)用于限定對象的取值范圍,以及允許執(zhí)行的處理操作。使用內(nèi)置函數(shù)type(obj1)可以返回對象obj1所屬的數(shù)據(jù)類型值(value)用于表示對象的數(shù)據(jù)類型的值。使用內(nèi)置函數(shù)print(obj1)可返回對象obj1的值標(biāo)識(identity)用于唯一標(biāo)識一個(gè)對象,通常對應(yīng)于對象在計(jì)算機(jī)內(nèi)存中的位置。使用內(nèi)置函數(shù)id(obj1)可返回對象obj1的標(biāo)識(CPython的實(shí)現(xiàn)為內(nèi)存存放位置)Python中的對象(2)>>>123
#輸出:123>>>id(123)
#輸出:140706558370656>>>type(123)
#輸出:<class'int'>>>>print(123)
#輸出:123>>>type(abs)
#輸出:<class'builtin_function_or_method'>>>>id(abs)
#輸出:2529313427104>>>type(range)
#輸出:<class'type'>>>>id(range)
#輸出:140706557885440【例2.2】使用內(nèi)置函數(shù)type()、id()和print()查看對象【例2.3】查看Python內(nèi)置函數(shù)對象變量、賦值語句和對象的引用(1)Python對象是位于計(jì)算機(jī)內(nèi)存中的一個(gè)內(nèi)存數(shù)據(jù)塊為了引用對象,必須通過賦值語句,把對象賦值給變量(也稱之為把對象綁定到變量)指向?qū)ο蟮囊眉醋兞?gt;>>a=1#字面量表達(dá)式1創(chuàng)建值為1的int
型實(shí)例對象,并綁定到變量a>>>b=2#字面量表達(dá)式2創(chuàng)建值為2的int型實(shí)例對象,并綁定到變量b>>>c=a+b#表達(dá)式a+b創(chuàng)建值為3的int型實(shí)例對象,并綁定到變量c【例2.4】使用賦值語句把對象綁定到變量變量、賦值語句和對象的引用(2)Python還支持以下賦值語句(1)鏈?zhǔn)劫x值(chainedassignment)(2)復(fù)合賦值語句(3)系列解包賦值>>>x=y=123#變量x和y均指向int對象123>>>i=1#變量i指向int對象1>>>i+=1#先計(jì)算表達(dá)式i+1的值,然#后創(chuàng)建一個(gè)值為2的int對象,#并綁定到變量i>>>a,b=1,2#變量a指向int對象1,變量b#指向int對象2>>>a,b=b,a#兩個(gè)變量a和b的值進(jìn)行交換【例2.5】其他賦值語句舉例常量Python語言不支持常量,即沒有語法規(guī)則限制改變一個(gè)常量的值。>>>TAX_RATE=0.17
#浮點(diǎn)類型常量TAX_RATE>>>PI=3.14
#浮點(diǎn)類型常量PI>>>ECNU='華東師范大學(xué)'#字符串常量ECNU【例2.6】常量示例Python語言使用約定,聲明在程序運(yùn)行過程中不會改變的變量為常量,通常使用全大寫字母(可以使用下劃線增加可閱讀性)表示常量名。對象內(nèi)存示意圖(1)Python程序運(yùn)行時(shí),在內(nèi)存中會創(chuàng)建各種對象(位于堆內(nèi)存中),通過賦值語句,將對象綁定到變量(位于棧內(nèi)存中),通過變量引用對象,進(jìn)行各種操作多個(gè)變量可以引用同一個(gè)對象如果一個(gè)對象不再被任何有效作用域中的變量引用,則會通過自動垃圾回收機(jī)制,回收該對象占用的內(nèi)存對象內(nèi)存示意圖(2)
>>>i=100>>>i=i+1【例2.7】變量增量運(yùn)算示例以及相應(yīng)的對象內(nèi)存示意圖第一條語句,創(chuàng)建一個(gè)值100的int對象,并綁定到變量i;第二條語句,先計(jì)算表達(dá)式i+1的值,然后創(chuàng)建一個(gè)值為101的int對象,并綁定到變量iii
100
100
1011i=100i=i+1對象內(nèi)存示意圖(3)>>>a=123
#a指向值為123的int型實(shí)例對象>>>b=456
#b指向值為456的int型實(shí)例對象>>>t=a
#變量t和a一樣,指向(引用)對象實(shí)例123>>>a=b
#變量a和b一樣,指向(引用)對象實(shí)例456>>>b=t
#變量b和t一樣,指向(引用)對象實(shí)例123【例2.8】交換兩個(gè)變量的示例以及相應(yīng)的對象內(nèi)存示意圖不可變對象(immutable)>>>a=18
#變量a指向int對象18>>>id(a)
#輸出:140706365363776。表示a指向的int對象18的id>>>a=25
#變量a指向int對象25>>>id(a)
#輸出:140706365364000。表示a指向的int對象25的id>>>b=25
#變量b指向int對象25>>>id(b)
#輸出:140706365364000。表示b指向的int對象25的id>>>id(25)
#輸出:140706365364000。表示int對象25的id不可變對象一旦創(chuàng)建,其值就不能被修改,例如:int、str、complex等【例2.9】不可變對象示例可變對象(mutable)>>>x=y=[1,2,3]
#變量x和y指向list對象[1,2,3]>>>id(x)
#輸出:1656936944328。表示變量x指向的list對象[1,2,3]的id>>>id(y)
#輸出:1656936944328。表示變量y指向的list對象[1,2,3]的id>>>x.append(4)
#變量x指向的list對象[1,2,3]附加一個(gè)元素4>>>x
#輸出:[1,2,3,4]。表示變量x指向的list對象[1,2,3,4]>>>id(x)
#輸出:1656936944328。變量x指向的list對象[1,2,3,4]的id未改變>>>xisy
#輸出:True。表示變量x和y指向同一個(gè)list對象[1,2,3,4]>>>x==y
#輸出:True。表示變量x和y指向的list對象值相等>>>z=[1,2,3,4]
#變量z指向的list對象[1,2,3,4]>>>id(z)
#輸出:1656965757064。表示變量z指向的list對象[1,2,3,4]的id>>>xisz
#輸出:False。表示變量x和z指向不同的list對象[1,2,3,4]>>>x==z
#輸出:True。表示變量x和z指向的list對象值相等【例2.10】可變對象示例可變對象的值可以被修改Python對象的可變性取決于其數(shù)據(jù)類型的設(shè)計(jì),即是否允許改變其值標(biāo)識符是變量、函數(shù)、類、模塊和其他對象的名稱標(biāo)識符的第一個(gè)字符必須是字母、下劃線(“_”),其后的字符可以是字母、下劃線或數(shù)字一些特殊的名稱,如if、for等保留關(guān)鍵字,不能作為標(biāo)識符例如,a_int、a_float、str1、_strname、func1為正確的變量名;而99var、It'sOK、for(關(guān)鍵字)為錯(cuò)誤的變量名2.3標(biāo)識符及其命名規(guī)則標(biāo)識符注意事項(xiàng)Python標(biāo)識符區(qū)分大小寫。例如,ABC和abc視為不同的名稱以雙下劃線開始和結(jié)束的名稱通常具有特殊的含義。例如,__init__為類的構(gòu)造函數(shù),一般應(yīng)避免使用避免使用Python預(yù)定義標(biāo)識符名作為自定義標(biāo)識符名。例如:NotImplemented、Ellipsis、int、float、list、str、tuple等010302保留關(guān)鍵字>>>
help()help>
keywordshelp>
ifhelp>
quit關(guān)鍵字即預(yù)定義保留標(biāo)識符關(guān)鍵字不能在程序中用作標(biāo)識符,否則會產(chǎn)生編譯錯(cuò)誤【例2.11】使用Python幫助系統(tǒng)查看關(guān)鍵字Python預(yù)定義標(biāo)識符Python語言包含許多預(yù)定義內(nèi)置類、異常、函數(shù)等,例如,float、ArithmeticError、print等用戶應(yīng)該避免使用Python預(yù)定義標(biāo)識符名作為自定義標(biāo)識符名使用Python的內(nèi)置函數(shù)dir(__builtins__),可以查看所有內(nèi)置的異常名、函數(shù)名等Python語言遵循的命名規(guī)則類型命名規(guī)則舉例模塊/包名全小寫字母,簡單有意義,如果需要可以使用下畫線math、sys函數(shù)名全小寫字母,可以使用下畫線增加可閱讀性foo(),my_func()變量名全小寫字母,可以使用下畫線增加可閱讀性age、my_var類名采用PascalCase命名規(guī)則,即多個(gè)單詞組成名稱,每個(gè)單詞除第一個(gè)字母大寫外,其余的字母均小寫MyClass常量名全大寫字母,可以使用下畫線增加可閱讀性LEFT、TAX_RATE2.4表達(dá)式和運(yùn)算符>>>importmath
#導(dǎo)入math模塊>>>a=2;b=10
#變量a指向int對象2,變量b指向int對象10>>>a+b
#輸出:1212>>>math.pi
#輸出:3.1415926535897933.141592653589793>>>math.sin(math.pi/2)#輸出:1.01.0表達(dá)式的組成操作數(shù)、運(yùn)算符和圓括號按一定規(guī)則組成表達(dá)式運(yùn)算符的優(yōu)先級控制各個(gè)運(yùn)算符的計(jì)算順序【例2.12】表達(dá)式示例表達(dá)式的書寫規(guī)則表達(dá)式從左到右在同一個(gè)基準(zhǔn)上書寫。例如,數(shù)學(xué)公式a2+b2應(yīng)該寫為:a**2+b**2乘號不能省略,例如,數(shù)學(xué)公式ab(表示a乘以b)應(yīng)寫為:a*b括號必須成對出現(xiàn),而且只能使用圓括號;圓括號可以嵌套使用010302運(yùn)算符運(yùn)算符用于在表達(dá)式中對一個(gè)或多個(gè)操作數(shù)進(jìn)行計(jì)算并返回結(jié)果值表達(dá)式計(jì)算順序取決于運(yùn)算符的結(jié)合順序和優(yōu)先級可以使用圓括號“()”強(qiáng)制改變運(yùn)算順序>>>11+22*3
77>>>(11+22)*399【例2.14】表達(dá)式中運(yùn)算符的優(yōu)先級示例Python運(yùn)算符及其優(yōu)先級2.5Python語句簡單語句包括:表達(dá)式語句、賦值語句、assert語句、pass空語句、del語句、return語句、yield語句、raise語句、break語句、continue語句、import語句、global語句、nonlocal語句等復(fù)合語句包括:if語句、while語句、for語句、try語句、with語句、函數(shù)定義、類定義等語句是Python程序的過程構(gòu)造塊,用于定義函數(shù)、定義類、創(chuàng)建對象、變量賦值、調(diào)用函數(shù)、控制分支、創(chuàng)建循環(huán)等0201Python語句分為簡單語句和復(fù)合語句Python語句示例importmath
#import語句,用于導(dǎo)入math模塊r=float(input("請輸入圓的半徑r:"))#賦值語句。輸入圓的半徑r,并轉(zhuǎn)換為float數(shù)據(jù)類型p=2*math.pi*r
#賦值語句。計(jì)算圓的周長s=math.pi*r**2
#賦值語句。計(jì)算圓的面積print("圓的周長為:",p)
#表達(dá)式語句。輸出圓的周長print("圓的面積為:",s)
#表達(dá)式語句。輸出圓的面積【例2.15】Python語句示例(statement.py):輸入圓的半徑r,計(jì)算并輸出圓的周長和面積程序運(yùn)行結(jié)果如下請輸入圓的半徑r:5圓的周長為:31.41592653589793圓的面積為:78.53981633974483Python語句的書寫規(guī)則使用換行符分隔,一般情況下,一行一條語句>>>
#正確>>>print("abc")#報(bào)錯(cuò)。IndentationError:unexpectedindent從第一列開始,前面不能有任何空格,否則會產(chǎn)生語法錯(cuò)誤。注意,注釋語句可以從任意位置開始;復(fù)合語句構(gòu)造體必須縮進(jìn)>>>print("如果語句太長,可以使用續(xù)行符(\),\續(xù)行內(nèi)容。")反斜杠(\)用于一個(gè)代碼跨越多行的情況。如果語句太長,可以使用續(xù)行符(\)>>>a=0;b=0;c=0
#變量a、b和c均指向int對象0>>>s="abc";print(s)#變量s指向值為"abc"的str型實(shí)例對象,并輸出abc分號(;)用于在一行書寫多條語句01030204復(fù)合語句及其縮進(jìn)書寫規(guī)則復(fù)合語句(條件語句、循環(huán)語句、函數(shù)定義和類定義,例如if、for、while、def、class等)由頭部語句(headerline)和構(gòu)造體語句塊(suites)組成>>>foriinrange(1,11):print(i,end='')...12345678910頭部語句由相應(yīng)的關(guān)鍵字(例如,if)開始,構(gòu)造體語句塊則為下一行開始的一行或多行縮進(jìn)代碼通??s進(jìn)是相對頭部語句縮進(jìn)四個(gè)空格,也可以是任意空格,但同一構(gòu)造體代碼塊的多條語句縮進(jìn)的空格數(shù)必須一致對齊。如果語句不縮進(jìn),或縮進(jìn)不一致,將導(dǎo)致編譯錯(cuò)誤如果條件語句、循環(huán)語句、函數(shù)定義和類定義比較短,可以放在同一行010302構(gòu)造體語句塊由一條或多條語句組成注釋語句以符號“#”開始,到行末結(jié)束。Python注釋語句可以出現(xiàn)在任何位置Python解釋器將忽略所有的注釋語句,注釋語句不會影響程序的執(zhí)行結(jié)果>>>
#A"helloworld!"program>>>
#注釋可以在任意位置,以#開始,到行末結(jié)束>>>print("helloworld")#輸出:helloworldhelloworld【例2.16】注釋語句示例空語句pass>>>defdo_nothing():
pass【例2.17】空語句示例表示一個(gè)空的代碼塊2.6函數(shù)和模塊(1)函數(shù)是可以重復(fù)調(diào)用的代碼塊函數(shù)的創(chuàng)建和調(diào)用聲明創(chuàng)建函數(shù)時(shí),可以聲明函數(shù)的參數(shù),即形式參數(shù),簡稱形參;調(diào)用函數(shù)時(shí),需要提供函數(shù)需要的參數(shù)的值,即實(shí)際參數(shù),簡稱實(shí)參函數(shù)可以使用return返回值defsayHello():
#創(chuàng)建函數(shù)對象sayHelloprint('HelloWorld!')
#函數(shù)體print('Tobeornottobe,thisisaquestion!’)
#函數(shù)體sayHello()【例2.18】聲明和調(diào)用函數(shù)示例(sayHello.py)def·函數(shù)名([形參列表])····函數(shù)體函數(shù)名([實(shí)參列表])程序運(yùn)行結(jié)果如下:HelloWord!Tobeornottobe,thisisaquestion!2.6函數(shù)和模塊(2)defgetValue(b,r,n):
#創(chuàng)建函數(shù)對象getValuev=b*((1+r)**n)
#計(jì)算最終收益vreturnv
#使用return返回值total=getValue(1000,0.05,5)#調(diào)用函數(shù)getValueprint(total)
#打印結(jié)果【例2.19】聲明和調(diào)用函數(shù)getValue(b,r,n),根據(jù)本金b、年利率r和年數(shù)n,計(jì)算最終收益v程序運(yùn)行結(jié)果如下:1276.2815625000003內(nèi)置函數(shù)(1)dir()、type()、id()、help()、len()、sum()、max()、min()等輸入函數(shù)input()和輸出函數(shù)print()實(shí)現(xiàn)用戶交互>>>s="Tobeornottobe,thisisaquestion!">>>type(s)#返回對象s所屬的數(shù)據(jù)類型。輸出:<class'str'>>>>len(s)#返回字符串s的長度。輸出:39>>>s1=[1,2,3,4,5]>>>max(s1)#返回列表s1的最大值。輸出:5>>>min(s1)#返回列表s1的最小值。輸出:1>>>sum(s1)/len(s1)#返回列表s1的平均值。輸出:3.0【例2.19】內(nèi)置函數(shù)使用示例1內(nèi)置函數(shù)(2)name=input("what'syourname:")print("Hello,",name)【例2.20】內(nèi)置函數(shù)使用示例2(hello2.py)程序運(yùn)行結(jié)果如下what'syourname:pineHello,pine模塊函數(shù)通過import語句,可以導(dǎo)入模塊module,然后使用module.function(arguments)的形式調(diào)用模塊中的函數(shù)>>>importmath>>>math.sin(2)0.9092974268256817【例2.22】模塊的導(dǎo)入示例1>>>frommathimportsin>>>sin(2)0.9092974268256817【例2.23】模塊的導(dǎo)入示例2模塊函數(shù)Python語言提供了海量的內(nèi)置函數(shù)、標(biāo)準(zhǔn)庫函數(shù)、第三方模塊函數(shù)函數(shù)的調(diào)用方法由應(yīng)用程序編程接口(API)確定模塊函數(shù)調(diào)用方法(簽名)功能描述內(nèi)置函數(shù)print(x)輸出abs(x)x的絕對值type(o)o的類型len(a)a的長度Python標(biāo)準(zhǔn)庫math模塊中的函數(shù)math.sin(x)x的正弦(參數(shù)以弧度為單位)math.cos(x)x的余弦(參數(shù)以弧度為單位)math.exp(x)x的指數(shù)函數(shù)(即e)math.log(x,b)x的以b為底的對數(shù)(即)。底數(shù)b缺省為e,即自然對數(shù)(即)math.sqrt(x)x的平方根Python標(biāo)準(zhǔn)庫random模塊中的函數(shù)random.random()返回[0,1)數(shù)據(jù)區(qū)間的隨機(jī)浮點(diǎn)數(shù)random.randrange(x,y)返回[x,y)數(shù)據(jù)區(qū)間的隨機(jī)整數(shù),其中x和y均為整數(shù)xlogbxlogexPython典型的函數(shù)調(diào)用函數(shù)調(diào)用返回值說明print('Hello')在控制臺輸出字符串Hello內(nèi)置函數(shù)len('Hello')5內(nèi)置函數(shù)math.sin(1)0.8414709848078965math模塊中的函數(shù)math.sqrt(-1.0)運(yùn)行時(shí)錯(cuò)誤負(fù)數(shù)的平方根random.random()0.3151503393010261random模塊中的函數(shù)。注意,每次產(chǎn)生不同的隨機(jī)數(shù)2.7數(shù)據(jù)類型Python語言中,一切皆為對象,而每個(gè)對象都屬于某個(gè)數(shù)據(jù)類型Python的數(shù)據(jù)類型包括內(nèi)置的數(shù)據(jù)類型、模塊中定義的數(shù)據(jù)類型和用戶自定義的類型數(shù)值數(shù)據(jù)類型:int、bool、float、complex序列數(shù)據(jù)類型:不可變(str、tuple、bytes)和可變(list、bytearray)集合數(shù)據(jù)類型:set、frozenset字典數(shù)據(jù)類型:dict。例如:{1:"one",2:"two"}整數(shù)類型(1)整型字面量:數(shù)字字符串(前面可以帶負(fù)號-)>>>a=123>>>type(a)<class'int'>>>>1_000_000_000_000_0001000000000000000>>>0x_FF_FF_FF_FF4294967295【例2.34】整型字面量示例Python3.8及以上版本支持使用下劃線作為整數(shù)或者浮點(diǎn)數(shù)的千分位標(biāo)記,以增強(qiáng)大數(shù)值的可閱讀性。二進(jìn)制、八進(jìn)制、十六進(jìn)制則使用下劃線區(qū)分4位標(biāo)記整數(shù)類型(2)整數(shù)的運(yùn)算算術(shù)運(yùn)算、位運(yùn)算、內(nèi)置函數(shù)、math模塊中的數(shù)學(xué)運(yùn)算函數(shù)浮點(diǎn)類型(1)>>>3.14
#輸出:3.143.14>>>type(3.14)#輸出:<class'float'><class'float'>【例2.25】浮點(diǎn)類型字面量示例舉例說明1.23,-24.5,10,0.2帶小數(shù)點(diǎn)的數(shù)字字符串1.,.2小數(shù)點(diǎn)的前后0可以省略3.14e-10,4E210,4.0e+210科學(xué)計(jì)數(shù)法(e或E表示底數(shù)10),如3.14e-10=3.14*10-10浮點(diǎn)類型常量浮點(diǎn)數(shù)的運(yùn)算算術(shù)運(yùn)算,math模塊中浮點(diǎn)數(shù)運(yùn)算的函數(shù)浮點(diǎn)類型(2)復(fù)數(shù)類型(1)屬性/方法說明示例real復(fù)數(shù)的實(shí)部>>>(1+2j).real#結(jié)果:1.0imag復(fù)數(shù)的實(shí)部>>>(1+2j).imag#結(jié)果:2.0conjugate()共軛復(fù)數(shù)>>>(1+2j).conjugate()#結(jié)果:(1-2j)complex對象屬性和方法>>>1+2j
#輸出:(1+2j)>>>type(1+2j)
#輸出:<class'complex’>>>>complex
#輸出:<class'complex'>>>>c=complex(4,5)>>>c
#輸出:(4+5j)【例2.26】復(fù)數(shù)字面量示例創(chuàng)建complex對象復(fù)數(shù)類型(2)表達(dá)式結(jié)果說明1+2j(1+2j)復(fù)數(shù)字面量(1+2j)+(3+4j)(4+6j)加法(1+2j)-(3+4j)(-2-2j)減法(1+2j)*(3+4j)(-5+10j)乘法(1+2j)/(3+4j)(0.44+0.08j)除法(1+2j)**2.0(-3+4j)乘冪(1+2j)/0.0運(yùn)行時(shí)錯(cuò)誤除法。除數(shù)不能為0cmath.sqrt(1+2j)(1.272019649514069+0.7861513777574233j)平方根(調(diào)用數(shù)學(xué)模塊函數(shù))cmath.sqrt(-2.0)1.4142135623730951j復(fù)數(shù)的平方根復(fù)數(shù)的運(yùn)算>>>a=1+2j>>>b=complex(4,5)#復(fù)數(shù)4+5j>>>a+b
#復(fù)數(shù)相加
(5+7j)>>>importcmath>>>cmath.sqrt(b)
#復(fù)數(shù)的平方根(2.280693341665298+1.096157889501519j)【例2.2】復(fù)數(shù)運(yùn)算示例布爾類型bool數(shù)據(jù)類型包含兩個(gè)值True(真)或False(假)>>>True,False
#輸出:(True,False)(True,False)>>>type(True),type(False)(<class'bool'>,<class'bool'>)【例2.28】布爾值字面量示例>>>bool(0)
#輸出:FalseFalse>>>bool(1)
#輸出:TrueTrue>>>bool("abc")
#輸出:TrueTrue【例2.29】bool對象示例0102混合運(yùn)算和數(shù)值類型轉(zhuǎn)換顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)使用target-type(value)將表達(dá)式強(qiáng)制轉(zhuǎn)換為所需的數(shù)據(jù)類型混合運(yùn)算和隱式轉(zhuǎn)換int、float和complex對象可以混合運(yùn)算如果表達(dá)式中包含complex對象,則其他對象自動轉(zhuǎn)換(隱式轉(zhuǎn)換)為complex對象,結(jié)果為complex對象如果表達(dá)式中包含float對象,則其他對象自動轉(zhuǎn)換(隱式轉(zhuǎn)換)為float對象,結(jié)果為float對象0102類型轉(zhuǎn)換示例>>>int(1.23)
#輸出:1>>>float(10)
#輸出:10.0>>>bool("abc")
#輸出:True
>>>
float("123xyz")#報(bào)錯(cuò)。ValueError:couldnotconvertstringtofloat:'123xyz'【例2.31】顯式類型轉(zhuǎn)換示例>>>
f=123+1.23>>>f#輸出:124.23>>>type(f)#輸出:<class'float'>>>>123+True#True轉(zhuǎn)換為1。輸出:124>>>123+False#False轉(zhuǎn)換為0。輸出:123【例2.30】隱式類型轉(zhuǎn)換示例字符串類型Python中沒有獨(dú)立的字符數(shù)據(jù)類型,字符即長度為1的字符串Python內(nèi)置數(shù)據(jù)類型str,用于字符串處理str對象的值為字符系列str對象(字符串)是不可變對象使用單引號或雙引號括起來的內(nèi)容,是字符串字面量Python字符串字面量>>>'abc'
#輸出:'abc‘'abc'>>>"Hello"
#輸出:'Hello‘'Hello'>>>type("python")
<class'str'>>>>'Blue''Sky'
'BlueSky'【例2.32】字符串字面量示例單引號('')。包含在單引號中的字符串,其中可以包含雙引號。雙引號("")。包含在雙引號中的字符串,其中可以包含單引號。三單引號()。包含在三單引號中的字符串,可以跨行。''''''三雙引號()。包含在雙引號中的字符串,其中可以包含單引號。''''''''''''01020304字符串編碼>>>ord('A')
#輸出:6565>>>chr(65)
#輸出:'A‘'A'>>>ord('張')
#輸出:2435224352>>>chr(24352)#輸出:'張‘'張'Python3字符默認(rèn)為16位Unicode編碼使用內(nèi)置函數(shù)ord()可以把字符轉(zhuǎn)換為對應(yīng)的Unicode碼;使用內(nèi)置函數(shù)chr()可以把十進(jìn)制數(shù)轉(zhuǎn)換為對應(yīng)的字符轉(zhuǎn)義字符>>>s='a\tb\tc\\td'>>>s
#輸出:'a\tb\tc\\td'>>>print(s)
#輸出:abc\td>>>'\101'
#輸出:'A'>>>'\x41'
#輸出:'A'>>>s=r'換\t行\(zhòng)t符\n'>>>s
#輸出:'換\\t行\(zhòng)\t符\\n'>>>print(s)
#輸出:換\t行\(zhòng)t符\n轉(zhuǎn)義字符串示例轉(zhuǎn)義序列字符\’單引號\”雙引號\\反斜杠\a響鈴(BEL)\b退格(BS)\f換頁(FF)\n換行(LF)\r回車(CR)\t水平制表符(HT)\v垂直制表符(VT)\ooo八進(jìn)制Unicode碼對應(yīng)的字符\xhh十六進(jìn)制Unicode碼對應(yīng)的字符使用r''或R''的字符串稱之為原始字符串,其中包含的任何字符都不進(jìn)行轉(zhuǎn)義字符串的運(yùn)算字符串對象支持關(guān)系運(yùn)算、使用運(yùn)算符+拼接兩個(gè)字符串、內(nèi)置函數(shù)、str對象方法等運(yùn)算操作字符串實(shí)際上是字符序列,故支持序列數(shù)據(jù)類型的基本操作,包括索引訪問、切片操作、連接操作、重復(fù)操作、成員關(guān)系操作、以及求字符串長度、最大值、最小值等常用的字符串表達(dá)式表達(dá)式結(jié)果說明'Hello,'+'World''Hello,World'字符串拼接'123'+'456''123456'字符串拼接(不是兩數(shù)相加)'1234'+'+'+'99''1234+99'兩次字符串拼接'123'+456運(yùn)行時(shí)錯(cuò)誤第二個(gè)操作數(shù)不是str數(shù)據(jù)類型"#"*10或10*"#"'##########'字符串重復(fù)"abc"=="ABC"False比較字符串是否相等len('World')5返回字符串的長度"abc".upper()ABC調(diào)用字符串對象的方法字符串的格式化【例2.33】字符串示例(string.py):格式化輸出字符串堆積的三角形>>>"學(xué)生人數(shù){0},平均成績{1}".format(15,81.2)'學(xué)生人數(shù)15,平均成績81.2'>>>str.format("學(xué)生人數(shù){0},平均成績{1:2.2f}",15,81.2)'學(xué)生人數(shù)15,平均成績81.20'>>>format(81.2,"0.5f")#輸出:'81.20000'>>>"學(xué)生人數(shù)%4d,平均成績%2.1f"%(15,81)'學(xué)生人數(shù)15,平均成績81.0'print("1".center(20))
#1行20個(gè)字符,居中對齊print(format("121","^20"))
#1行20個(gè)字符,居中對齊print(format("12321","^20"))
#1行20個(gè)字符,居中對齊print("1".rjust(20,"*"))
#1行20個(gè)字符,右對齊,加*號print(format("121","*>20"))
#1行20個(gè)字符,右對齊,加*號print(format("12321","*>20"))
#1行20個(gè)字符,右對齊,加*號字符串.format(值1,值2…)str.format(格式字符串1,值1,值2)format(值格式字符串)格式字符串%(值1,值2…)#兼容Python2的格式,不建議使用列表類型>>>list1=[10,20,30,40,50]#創(chuàng)建列表對象并綁定到變量list1>>>list1[0]=110#修改列表list1的第1個(gè)元素(索引位置0)>>>list1.append(60)#在列表list1中添加元素50。結(jié)果為:[110,20,30,40,50,60]>>>sum(list1)#使用內(nèi)置函數(shù)sum返回list1中的元素之和。輸出為:310>>>len(list1)#使用內(nèi)置函數(shù)len返回list1中的元素個(gè)數(shù)。輸出為:6>>>max(list1)#使用內(nèi)置函數(shù)max返回list1中的最大元素。輸出為:110【例2.34】列表類型示例列表(list)是一組有序項(xiàng)目的數(shù)據(jù)結(jié)構(gòu)列表的定義列表(list)對象是一個(gè)對象系列,對象可以是任何類型:數(shù)值、字符串、甚至是其它列表。列表是可變對象[x1,[x2,…,xn]]元組>>>t1=1,2,3#創(chuàng)建包含3個(gè)元素的元組對象,并綁定到變量t1>>>t1[2]#返回t1的第3個(gè)元素(索引位置2),輸出:3>>>t2=()#創(chuàng)建包含0個(gè)元素的元組對象,并綁定到變量t2>>>t3=(1,)#創(chuàng)建包含1個(gè)元素的元組對象,并綁定到變量t3>>>t4=(1)#創(chuàng)建一個(gè)整數(shù)對象,并綁定到變量t4>>>print(t1,t2,t3,t4)#輸出:(1,2,3)()(1,)1【例2.35】使用元組字面量創(chuàng)建元組實(shí)例對象示例一組有序序列,包含0個(gè)或多個(gè)對象引用元組的定義——x1,[x2,…,xn]]或者(x1,[x2,…,xn])元組也可以通過創(chuàng)建tuple對象來創(chuàng)建tuple()#創(chuàng)建一個(gè)空列表tuple(iterable)#創(chuàng)建一個(gè)列表,包含的項(xiàng)目為可枚舉對象iterable中的元素注意:如果元組中只有一個(gè)項(xiàng)目時(shí),后面的逗號不能省略,這是因?yàn)镻ython解釋器把(1)解釋為1,(1,)解釋為元組字典(映射)鍵必須為可hash對象,因此不可變對象(bool、int、float、complex、str、tuple等)可以作為鍵;值則可以為任意對象。字典中的鍵是唯一的>>>d1={}#創(chuàng)建空字典對象,并綁定到變量d1>>>d2={'baidu':'','bing':'’}#創(chuàng)建字典對象,并綁定到變量d2>>>d2['baidu']#返回字典d2中鍵為'baidu'的值,輸出:''【例2.36】字典對象示例字典(dict,或映射map)是一組鍵/值對的數(shù)據(jù)結(jié)構(gòu)。每個(gè)鍵對應(yīng)于一個(gè)值。在字典中,鍵不能重復(fù)。根據(jù)鍵可以查詢到值2.8類和對象classPerson:
#定義類PersondefsayHello(self):
#定義類Person的函數(shù)sayHelloprint('Hello,howareyou?')p=Person()
#創(chuàng)建對象p.sayHello()
#調(diào)用對象的方法【例2.37】類和對象示例(Person.py):定義類Person,創(chuàng)建其對象,并調(diào)用對象方法Class類名:….類體創(chuàng)建類對象實(shí)例對象的創(chuàng)建和調(diào)用anObject=類名(參數(shù)列表)anObject.對象方法(參數(shù))或anObject.對象屬性程序運(yùn)行結(jié)果如下Hello,howareyou?2.9模塊和包通過import語句,可以導(dǎo)入模塊,并使用其定義的功能還可以使用from…import語句直接導(dǎo)入模塊中的成員import模塊名…#導(dǎo)入模塊模塊名.函數(shù)名()…#使用包含模塊的全限定名稱調(diào)用模塊中的函數(shù)模塊名.變量名…#使用包含模塊的全限定名稱調(diào)用模塊中的變量from模塊名import成員名…………#導(dǎo)入模塊中具體成員from模塊名import*…#導(dǎo)入模塊中所有成員成員名…………#可以直接使用導(dǎo)入的模塊成員功能相近的模塊可以組織成包,包是模塊的層次性組織結(jié)構(gòu)包含Python代碼的源文件(通常包含用戶自定義的變量、函數(shù)和類)稱之為模塊,其擴(kuò)展名為.py模塊和包示例importmath
#導(dǎo)入標(biāo)準(zhǔn)模塊matha=1;b=5;c=6
#變量a、b和c分別指向int對象1、5和6x1=(-b+math.sqrt(b*b-4*a*c))/(2*a)
#使用模塊math中的函數(shù)sqrt求解平方根x2=(-b-math.sqrt(b*b-4*a*c))/(2*a)print('方程x*x+5*x+6=0的解為:',x1,x2)
#輸出一元二次方程的兩個(gè)解【例2.38】模塊和包示例(module1.py):求解一元二次方程x2+5x+6=0程序運(yùn)行結(jié)果如下。方程x*x+5*x+6=0的解為:-2.0-3.02.10綜合應(yīng)用:turtle模塊和海龜繪圖所謂的海龜繪圖,即假定一只海龜(海龜帶著一只鋼筆)在一個(gè)屏幕上來回移動,當(dāng)它移動時(shí)會繪制直線。海龜可以沿直線移動指定的距離,也可以旋轉(zhuǎn)一個(gè)指定的角度通過編寫代碼,可以控制海龜移動和繪圖,從而繪制出圖形turtle模塊概述導(dǎo)入turtle模塊from
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧醫(yī)療監(jiān)管互聯(lián)網(wǎng)行業(yè)方案
- 微生物檢驗(yàn)技術(shù)更新方案
- 文化咨詢服務(wù)委托協(xié)議
- 建筑工程柱梁偏位糾正方案
- 2025廣西桂林電子科技大學(xué)第三批管理人員招聘1人筆試考試參考試題及答案解析
- 肺炎衣原體感染的動物模型構(gòu)建-洞察及研究
- 輕量化體育器材制造技術(shù)-洞察及研究
- 2026廣東廣州市中山市教體系統(tǒng)第一期招聘事業(yè)單位人員117人考試筆試備考題庫及答案解析
- 邊緣計(jì)算在網(wǎng)絡(luò)安全測試中的新機(jī)遇-洞察及研究
- 電商平臺物流配送協(xié)議
- 醫(yī)用耗材管理辦法原文
- 高州市緬茄杯數(shù)學(xué)試卷
- 傳承紅色基因鑄就黨紀(jì)之魂建黨104周年七一黨課
- 詩詞大會搶答題庫及答案
- 立式油罐知識培訓(xùn)課件
- 口腔健康科普指南
- 2025年《智能客戶服務(wù)實(shí)務(wù)》課程標(biāo)準(zhǔn)
- 公司便民雨傘管理制度
- 醫(yī)院購買電腦管理制度
- 編制竣工圖合同范本
- 新22J01 工程做法圖集
評論
0/150
提交評論