版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python數(shù)據(jù)分析與實(shí)踐12023/10/28第2章Python語(yǔ)言基礎(chǔ)知識(shí)本章學(xué)習(xí)目標(biāo):理解變量標(biāo)識(shí)符的含義,掌握其構(gòu)造和使用熟練掌握Python中數(shù)字類型的基本運(yùn)算熟練掌握Python中條件語(yǔ)句的運(yùn)用32023/10/282.1.1標(biāo)識(shí)符標(biāo)識(shí)符(IDentifier)是指用來(lái)標(biāo)識(shí)某個(gè)實(shí)體的一個(gè)符號(hào)。在不同的應(yīng)用環(huán)境下有不同的含義。在python里,標(biāo)識(shí)符有字母、數(shù)字、下劃線組成。所有標(biāo)識(shí)符可以包括英文、數(shù)字以及下劃線(_),但不能以數(shù)字開頭。python中的標(biāo)識(shí)符是區(qū)分大小寫的。42023/10/282.1.1標(biāo)識(shí)符
另外,以下畫線開頭的標(biāo)識(shí)符是有特殊意義的:以單下畫線開頭的(_foo)代表不能直接訪問的類屬性,需通過類提供的接口進(jìn)行訪問,不能用“fromxxximport*”導(dǎo)入;以雙下畫線開頭的(__foo)代表類的私有成員;以雙下畫線開頭和結(jié)尾的(__foo__)代表Python里特殊方法專用的標(biāo)識(shí),例如__init__()代表類的構(gòu)造函數(shù)。2.1.2變量變量來(lái)源于數(shù)學(xué),在計(jì)算機(jī)語(yǔ)言中能儲(chǔ)存計(jì)算結(jié)果或能表示值抽象概念。變量的表現(xiàn)形式是以一個(gè)綁定該變量的語(yǔ)句開始的,換句話說(shuō),變量可以通過變量名訪問。在Python中沒有變量聲明,下面通過示例來(lái)具體看一下Python中變量的應(yīng)用。
在運(yùn)行helloworld.py時(shí),Python都做了些什么呢?下面來(lái)深入研究一下。實(shí)際上,即便是運(yùn)行簡(jiǎn)單的程序,Python所做的工作也相當(dāng)多。例如:print(“helloworld!”)運(yùn)行上述代碼,用戶將看到如下輸出:helloworld!
在運(yùn)行helloworld.py文件時(shí),末尾的.py指出這是一個(gè)Python程序,因此IDE將使用Python解釋器來(lái)運(yùn)行它。Python解釋器讀取整個(gè)程序,確定其中每個(gè)單詞的含義。例如,當(dāng)看到單詞print時(shí),解釋器就會(huì)將括號(hào)中的內(nèi)容打印到屏幕,而不管括號(hào)中的內(nèi)容是什么。1.運(yùn)行helloworld.py時(shí)發(fā)生的情況下面來(lái)嘗試在helloworld.py中使用一個(gè)變量。在這個(gè)文件開頭添加一行代碼,并對(duì)第2行代碼進(jìn)行修改,如下所示:message=”helloworld!”print(message)運(yùn)行這個(gè)程序,看看結(jié)果如何。helloworld!
在這里添加了一個(gè)名為message的變量。每個(gè)變量都存儲(chǔ)了一個(gè)值,即與變量相關(guān)聯(lián)的信息,所存儲(chǔ)的值為文本“helloworld!”。添加變量導(dǎo)致Python解釋器需要做更多的工作,在處理第1行代碼時(shí),它將文本“helloworld!”與變量message關(guān)聯(lián)起來(lái);而處理第2行代碼時(shí),它將與變量message關(guān)聯(lián)的值打印到屏幕。2.使用變量下面進(jìn)一步擴(kuò)展這個(gè)程序:修改helloworld.py,使其再打印一條消息。為此,在helloworld.py中添加一個(gè)空行,再添加下面兩行代碼:message=”helloworld!”print(message)message=”helloPythonworld!”print(message)運(yùn)行這個(gè)程序,看看結(jié)果如何:helloworld!helloPythonworld!在程序中可隨時(shí)修改變量的值,而Python將始終記錄變量的最新值。2.使用變量
在Python中使用變量時(shí)需要遵守一些規(guī)則,違反這些規(guī)則將引發(fā)錯(cuò)誤,請(qǐng)務(wù)必牢記下列有關(guān)變量的規(guī)則:變量名只能包含字母、數(shù)字和下劃線。變量名可以字母或下劃線打頭,但不能以數(shù)字打頭,例如,可將變量命名為name_1,但不能將其命名為1_name。變量名不能包含空格,但可使用下劃線來(lái)分隔其中的單詞。例如,變量名greeting_message可行,但變量名greetingmessage會(huì)引發(fā)錯(cuò)誤。不要將Python關(guān)鍵字和函數(shù)名用作變量名,即不要使用Python保留用于特殊用途的單詞,如print。變量名應(yīng)既簡(jiǎn)短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。慎用小寫字母l和大寫字母O,因?yàn)樗鼈兛赡鼙蝗隋e(cuò)看成數(shù)字1和0。3.變量的命名102023/10/282.2數(shù)據(jù)類型及運(yùn)算
Python程序的運(yùn)行取決于該程序要處理的數(shù)據(jù)。Python中的所有數(shù)據(jù)值都是對(duì)象,并且每個(gè)對(duì)象或者值都有一個(gè)類型(type)。對(duì)象的類型確定了該對(duì)象支持哪些操作,或者換句話講,確定了可以對(duì)該數(shù)據(jù)值執(zhí)行哪些操作。類型還確定了該對(duì)象的屬性(atribute)和項(xiàng)目(item)(如果存在的話),以及該對(duì)象是否可以被改變。112023/10/282.2數(shù)據(jù)類型及運(yùn)算
一個(gè)可以被改變的對(duì)象稱為“可變對(duì)象”(mutableobject),而不可以被改變的對(duì)象稱為“不可變對(duì)象”(immutableobject)。內(nèi)置的type(obj)可以接受任何對(duì)象作為參數(shù),并返回obj類型的對(duì)象。如果對(duì)象obj具有類型type(或者其任何子類),則內(nèi)置函數(shù)isinstance(obj,type)將返回True,否則該函數(shù)將返回False。122023/10/28對(duì)于一些基本數(shù)據(jù)類型,比如數(shù)字、字符串、元組、列表和字典,Python都有內(nèi)置類型,可以使用type函數(shù)來(lái)確定Python給一個(gè)變量分配了什么數(shù)據(jù)類型。在下面的示例中,可以看到兩個(gè)變量分配了不同的數(shù)據(jù)類型。coffee_cup=”coffee”type(coffee_cup)<class‘str’>cups_consumed=2type(cups_consumed)<class‘int’>Python給coffee_cup分配了數(shù)據(jù)類型str(字符串或字符串常量),因?yàn)樗吹搅艘?hào)括起來(lái)的一個(gè)字符串。然而,對(duì)于變量cups_consumed,Python看到了一個(gè)整數(shù),因此給它分配了數(shù)據(jù)類型int(整數(shù))。132023/10/28
下面將會(huì)對(duì)主要介紹數(shù)字類型數(shù)據(jù),其他類型數(shù)據(jù)將在后面章節(jié)中進(jìn)行介紹。開發(fā)者還可以創(chuàng)建用戶自定義類型,這些類型也被稱為類(class)。
Python支持3種不同的數(shù)值類型:整數(shù)(int)、浮點(diǎn)數(shù)(Float)、復(fù)數(shù)(Complex)。2.2.1數(shù)據(jù)類型142023/10/282.2.1數(shù)據(jù)類型
Python中的內(nèi)置數(shù)字對(duì)象支持整數(shù)(普通整型和長(zhǎng)整型)(int)、浮點(diǎn)型數(shù)字(float)和復(fù)數(shù)(complex)。Python中的所有數(shù)字都是不可變對(duì)象,這意味著在對(duì)一個(gè)數(shù)字對(duì)象執(zhí)行任何操作時(shí)總是會(huì)產(chǎn)生一個(gè)新的數(shù)字對(duì)象。
注意,數(shù)字常量不包含+或-,如果包含這兩個(gè)符號(hào),則表示該符號(hào)是一個(gè)分隔運(yùn)算符。152023/10/281.整數(shù)型(int)
在Python中整數(shù)常量可以是十進(jìn)制、八進(jìn)制或十六進(jìn)制。十進(jìn)制常量可以由第一個(gè)數(shù)字為非零數(shù)字的數(shù)字序列表示。為了表示八進(jìn)制常量,可以在0后面帶一個(gè)八進(jìn)制數(shù)字(0~7)序列。為了表示十六進(jìn)制常量,可以在0x后面帶一個(gè)十六進(jìn)制數(shù)字序列(0~9和A~F,可以使用大寫或小寫字母)。與C語(yǔ)言中所指的整型規(guī)則相同。162023/10/281.整數(shù)型(int)
實(shí)際上,開發(fā)者不需要擔(dān)心普通整型和長(zhǎng)整型之間的區(qū)別,因?yàn)樵谛枰臅r(shí)候?qū)ζ胀ㄕ偷牟僮鲗⑸砷L(zhǎng)整型結(jié)果(也就是說(shuō),在運(yùn)算結(jié)果超出普通整型結(jié)果的數(shù)值范圍時(shí))。不過,開發(fā)者可以選擇將字母L(或1)放在任何類型的整數(shù)的后面,以明確地表示該整數(shù)是長(zhǎng)整型。長(zhǎng)整型沒有預(yù)定義的大小限制,只要內(nèi)存允許,長(zhǎng)整型可以無(wú)限大。另外,普通整型只占用了幾字節(jié)的內(nèi)存,并且其最小和最大值是由計(jì)算的架構(gòu)決定的。sys.maxint是可以使用的最大正整數(shù),-sys.maxint-1是可以使用的最大負(fù)整數(shù)。在32位計(jì)算機(jī)上,sys.maxint是2147483647。2.浮點(diǎn)數(shù)(Float)Python將帶小數(shù)點(diǎn)的數(shù)字都稱為浮點(diǎn)數(shù)。大多數(shù)編程語(yǔ)言都使用了這個(gè)術(shù)語(yǔ),它指出了這樣一個(gè)事實(shí):小數(shù)點(diǎn)可出現(xiàn)在數(shù)字的任何位置。每種編程語(yǔ)言都須細(xì)心設(shè)計(jì),以妥善地處理浮點(diǎn)數(shù),確保不管小數(shù)點(diǎn)出現(xiàn)在什么位置,數(shù)字的行為都是正常的。
從很大程度上說(shuō),使用浮點(diǎn)數(shù)時(shí)都無(wú)需考慮其行為。你只需輸入要使用的數(shù)字,Python通常都會(huì)按你期望的方式處理它們。182023/10/283.復(fù)數(shù)(complex)
復(fù)數(shù)是由兩個(gè)浮點(diǎn)值組成的,一個(gè)是實(shí)部,另一個(gè)是虛部,可以理解為數(shù)學(xué)中的無(wú)理數(shù)。開發(fā)者可以通過訪何只讀屬性z.real和z.imag訪問復(fù)數(shù)對(duì)象z的兩個(gè)部分。
開發(fā)者可以將一個(gè)虛數(shù)字面常量指定為一個(gè)浮點(diǎn)或十進(jìn)制字面常量,后面跟一個(gè)j或J,例如:0j,0.j,0.0j,1j,1.j,1.0j,1e0j,1.e0j其未尾的j表示-1的平方根。復(fù)數(shù)通常在電氣工程中使用(在有些其他語(yǔ)言中使用i來(lái)表示,但Python選擇使用j。若想表示任何復(fù)數(shù)常數(shù),可以使用一個(gè)浮點(diǎn)(或整數(shù))加上或減去一個(gè)虛數(shù)。例如要想表示數(shù)字1的復(fù)數(shù),可以使用表達(dá)式1+0j或者1.0+0.0j。192023/10/282.2.2運(yùn)算符和表達(dá)式
表達(dá)式(expression)是一個(gè)代碼語(yǔ)句,python將計(jì)算這段表達(dá)式產(chǎn)生一個(gè)結(jié)果,最簡(jiǎn)單的表達(dá)式是標(biāo)識(shí)符。下表中列出的常見運(yùn)算符。其中運(yùn)算符按優(yōu)先級(jí)遞減順序排列,高優(yōu)先級(jí)在前,低優(yōu)先級(jí)在后,列在一起的運(yùn)算符具有相同的優(yōu)先級(jí)。第三列給出了運(yùn)算符的結(jié)合規(guī)則:L(從左到右)、R(從右到左)、NA(無(wú)結(jié)合規(guī)則)。運(yùn)算符說(shuō)明結(jié)合規(guī)則‘expr,…’字符串轉(zhuǎn)換NA{key:expr,…}創(chuàng)建字典NA[expr,…]創(chuàng)建列表NA(expr,…)創(chuàng)建元組或圓括號(hào)NAf(expr,…)函數(shù)調(diào)用L202023/10/282.2.2運(yùn)算符和表達(dá)式運(yùn)算符說(shuō)明結(jié)合規(guī)則‘expr,…’字符串轉(zhuǎn)換NA{key:expr,…}創(chuàng)建字典NA[expr,…]創(chuàng)建列表NA(expr,…)創(chuàng)建元組或圓括號(hào)NAf(expr,…)函數(shù)調(diào)用L
在表中,expr、key、f、index、x和y表示任意表達(dá)式,而attr和arg表示任何標(biāo)識(shí)符。除了字符串轉(zhuǎn)換之外,符號(hào)“...”表示使用逗號(hào)分隔的零個(gè)或多個(gè)重復(fù)表達(dá)式,字符串轉(zhuǎn)換需要一個(gè)或多個(gè)重復(fù)表達(dá)式。除了字符串轉(zhuǎn)換運(yùn)算符之外,在所有運(yùn)算符中,拖尾逗號(hào)允許使用且沒有危害,在字符串運(yùn)算符中禁止使用拖尾逗號(hào)。212023/10/282.2.2運(yùn)算符和表達(dá)式
下面以在Python中對(duì)整數(shù)執(zhí)行簡(jiǎn)單的加(+)、減(-)、乘(?)、除(/)運(yùn)算為例進(jìn)行介紹:1+129-813*7215/22.5在終端會(huì)話中,Python直接返回運(yùn)算結(jié)果。222023/10/282.2.2運(yùn)算符和表達(dá)式
Python使用兩個(gè)乘號(hào)表示乘方運(yùn)算:2**383**32710**410000232023/10/282.2.2運(yùn)算符和表達(dá)式
Python還支持運(yùn)算次序,因此用戶可以在同一個(gè)表達(dá)式中使用多種運(yùn)算。用戶還可以使用括號(hào)來(lái)修改運(yùn)算次序,讓Python按自己指定的次序執(zhí)行運(yùn)算,例如:5+3*520(5+3)*540
在這些示例中,空格不影響Python計(jì)算表達(dá)式的方式,它們的存在旨在讓機(jī)器閱讀代碼時(shí)能迅速確定先執(zhí)行哪些運(yùn)算。242023/10/282.2.2運(yùn)算符和表達(dá)式
浮點(diǎn)型數(shù)據(jù)的運(yùn)算與整數(shù)類似,例如:0.1+0.30.42.2*0.51.10.6/0.41.49999999999998需要注意的是,結(jié)果包含的小數(shù)位數(shù)可能是不確定的(例如0.6/0.4)。252023/10/282.2.2運(yùn)算符和表達(dá)式
在Python中,當(dāng)整型(int)與浮點(diǎn)型(float)做運(yùn)算時(shí),結(jié)果默認(rèn)是浮點(diǎn)型,例如:5/2.02.5262023/10/282.2.2運(yùn)算符和表達(dá)式
在Python中有3個(gè)布爾運(yùn)算符,即and、or和not。布爾運(yùn)算也叫邏輯運(yùn)算,它的運(yùn)算結(jié)果只有兩個(gè)值,即真(True)和假(False)。一個(gè)布爾表達(dá)式也只有一個(gè)邏輯結(jié)果,要么為True,要么為False。例如12這樣一個(gè)表達(dá)式,它的結(jié)果就是True,而3+1>5這樣一個(gè)表達(dá)式,它的結(jié)果就是False。272023/10/282.2.2運(yùn)算符和表達(dá)式
and也被稱為“與”運(yùn)算,該運(yùn)算符連接左、右兩個(gè)布爾表達(dá)式,即xandy。若x和y都為True,則and運(yùn)算的結(jié)果為True;否則,只要x和y中至少有一個(gè)為False,整個(gè)and運(yùn)算的結(jié)果就為False。282023/10/282.2.2運(yùn)算符和表達(dá)式
or也被稱為“或”運(yùn)算,該運(yùn)算符連接左、右兩個(gè)布爾表達(dá)式,即xory。若x和y都為False,則or運(yùn)算的結(jié)果為False;否則,只要x和y中至少有一個(gè)為True,整個(gè)or運(yùn)算的結(jié)果就為True。292023/10/282.2.2運(yùn)算符和表達(dá)式
not也被稱為“非”運(yùn)算,該運(yùn)算符作用于一個(gè)布爾表達(dá)式,即notx。若x為True,則not運(yùn)算的結(jié)果為False;若x為False,則not運(yùn)算的結(jié)果為True。302023/10/282.2.2運(yùn)算符和表達(dá)式
例如:(5>3)and(3+4==7)#左、右兩邊都為True,and運(yùn)算的結(jié)果為TrueTrue(5<3)and(3+4==7)#左邊為False,右邊為True,and運(yùn)算的結(jié)果為FalseFalse(5<3)or(3+4==7)#左邊為False,右邊為True,or運(yùn)算的結(jié)果為TrueTrue(5<3)or(4+2==7)#左、右兩邊都為False,or運(yùn)算的結(jié)果為FalseFalsenot(5<3)#右邊為False,not運(yùn)算的結(jié)果為TrueTrue312023/10/282.3分支結(jié)構(gòu)控制語(yǔ)句
說(shuō)到分支結(jié)構(gòu)控制語(yǔ)句,似乎所有的編程語(yǔ)言都有類似的語(yǔ)句。條件判斷、有限循環(huán)、無(wú)限循環(huán)語(yǔ)句,這幾個(gè)語(yǔ)句是最基本的,也是必不可少的。322023/10/282.3.1if語(yǔ)句
最基本的結(jié)構(gòu)化命令就是if語(yǔ)句了,在Python中if語(yǔ)句具有如下的基本格式:Ifcondition:statement
下面通過一些例子來(lái)展示如何使用if語(yǔ)句。假設(shè)有一個(gè)表示某人年齡的變量,而你想知道這個(gè)人是否能夠駕駛的年齡,可使用如下代碼:age=19ifage>=18:print(“Youareoldenoughtodrive”)這里要注意print前面要有4個(gè)空格,否則運(yùn)行過程中會(huì)出現(xiàn)錯(cuò)誤。332023/10/282.3.1if語(yǔ)句
在if語(yǔ)句中,縮進(jìn)的作用與for循環(huán)中相同。如果測(cè)試通過了,將執(zhí)行if語(yǔ)句后面所有縮進(jìn)的代碼行,否則將忽略它們。
在緊跟在if語(yǔ)句后面的代碼塊中,可根據(jù)需要包含任意數(shù)量的代碼行。342023/10/282.3.2if/else語(yǔ)句
在if語(yǔ)句中,對(duì)于是否運(yùn)行語(yǔ)句,如果條件返回False邏輯值,Python則會(huì)移動(dòng)到下一條語(yǔ)句中。那如果希望在返回False時(shí),可以執(zhí)行另一組語(yǔ)句,這就需要使用到條件語(yǔ)句了。似乎所有的條件語(yǔ)句都使用if…else…。它的作用可以簡(jiǎn)單概括為非此即彼。滿足條件時(shí)執(zhí)行A語(yǔ)句,否則執(zhí)行B語(yǔ)句。下面來(lái)看一下Python中if…else…的具體應(yīng)用示例:age=20ifage>18:print(“Youareanadult”)else:print(“Youareunderage”)…Youareanadult352023/10/282.3.2if/else語(yǔ)句
在使用if-else語(yǔ)句的過程中需要注意如何放置else的位置,如果else縮進(jìn)了,就會(huì)發(fā)生錯(cuò)誤:age=20ifage>18:print(“Youareanadult”)else:print(“Youareunderage”)…YouareanadultFile"stdin",line3else:
^SyntaxError:invalidsyntax362.3.3if/elif/else語(yǔ)句
目前為止,看到了如何使用if或if…else…來(lái)控制語(yǔ)句。這使得我們?cè)趯?duì)程序控制上具有更多的靈活性。然而還有更多。比如當(dāng)需要將一個(gè)值與多個(gè)范圍的條件進(jìn)行比較,這時(shí)就使用Python提供的if-elif-else結(jié)構(gòu)。Python只執(zhí)行if-elif-else結(jié)構(gòu)中的一個(gè)代碼塊,它依次檢查每個(gè)條件測(cè)試,直到遇到通過了的條件測(cè)試。測(cè)試通過后,Python將執(zhí)行緊跟在它后面的代碼,并跳過余下的測(cè)試。372.3.3if/elif/else語(yǔ)句例如:age=41ifage<18:print(“Youareunderage.”)elif18<=age<40:print(“Youareayoungman..”)elif40<=age<60:print(“Youaremiddle-aged..”)else:print(“Youareanoldman..”)…Youaremiddle-aged.382.3.3if/elif/else語(yǔ)句age=20ifage<18:print("Youareunderage.")elif18<=age<40:print("Youareayoungman.")elif40<=age<60:print("Youaremiddle-aged.")else:print("Youareanoldman.")…Youareayoungman.Python并不要求if-elif結(jié)構(gòu)后面必須有else代碼塊。在有些情況下,else代碼塊很有用;而在其他一些情況下,使用一條elif語(yǔ)句來(lái)處理特定的情形更清晰,例如:392.3.3if/elif/else語(yǔ)句
else是一條包羅萬(wàn)象的語(yǔ)句,只要不滿足任何if或elif中的條件測(cè)試,其中的代碼就會(huì)執(zhí)行,這可能會(huì)引入無(wú)效甚至惡意的數(shù)據(jù)。如果用戶知道最終要測(cè)試的條件,應(yīng)考慮使用一個(gè)elif代碼塊來(lái)代替else代碼塊。這樣,用戶就可以肯定,僅當(dāng)滿足相應(yīng)的條件時(shí)自己的代碼才會(huì)執(zhí)行。402.4.1循環(huán)結(jié)構(gòu)控制語(yǔ)句
在編程過程中,總會(huì)遇到需要把某個(gè)過程重復(fù)N次的情況,這個(gè)時(shí)候就要使用到循環(huán)語(yǔ)句來(lái)完成語(yǔ)句或函數(shù)等任務(wù)的重復(fù)執(zhí)行。412.4.1.1while語(yǔ)句在Python中,while循環(huán)語(yǔ)句是“條件控制的”循環(huán),即無(wú)限循環(huán)。只要不滿足某種條件,任務(wù)會(huì)一直執(zhí)行,直到滿足條件。例如:422.4.1.1while語(yǔ)句number=1whilenumber<=10:print(number)number=number+1…12345678910
在這個(gè)示例中,while語(yǔ)句會(huì)先檢查測(cè)試條件變量number的值,只要該變量的值小于或等于10,Python語(yǔ)句就會(huì)執(zhí)行,在第四行中,while循環(huán)的最后一條語(yǔ)句會(huì)將變量的值加1。因此,當(dāng)number等于11時(shí),while的測(cè)試語(yǔ)句返回false,此時(shí),一個(gè)循環(huán)就終止了。432.4.1.2for語(yǔ)句
在Python中,for循環(huán)結(jié)構(gòu)稱為“計(jì)數(shù)控制”循環(huán),即有限循環(huán)。在循環(huán)任務(wù)過程中會(huì)出現(xiàn)需要執(zhí)行一定次數(shù)的情況,這個(gè)時(shí)候可以使用for循環(huán)來(lái)完成這個(gè)任務(wù)。例如:442.4.1.2for語(yǔ)句numbers=[0,1,2,3,4,5,6,7,8,9]fornumberinnumbers:print(number)…0123456789452.4.2環(huán)嵌套控制語(yǔ)句
循環(huán)嵌套式在一個(gè)循環(huán)語(yǔ)句中嵌入另一個(gè)循環(huán)語(yǔ)句。例如,位于循環(huán)代碼塊中的一個(gè)for循環(huán)就是循環(huán)嵌套。462.4.2.1break語(yǔ)句和continue語(yǔ)句
通常,循環(huán)會(huì)不斷地執(zhí)行代碼塊,直到條件不滿足時(shí)才會(huì)停止。但在有些情況下,你可能想中斷循環(huán),開始進(jìn)入“下一輪”代碼塊執(zhí)行流程或直接結(jié)束循環(huán)。
要結(jié)束或跳出循環(huán),可使用break語(yǔ)句。break語(yǔ)句用于控制程序流程,可使用它來(lái)控制哪些代碼行將執(zhí)行,哪些代碼行不執(zhí)行,從而讓程序按你的要求執(zhí)行你要執(zhí)行的代碼。例如,來(lái)看一個(gè)從1到10,但只打印其中與3乘積小于10的數(shù):472.4.2.1break語(yǔ)句和continue語(yǔ)句number=0whilenumber<10:number+=1ifnumber*3>=10:breakprint(number)
首先將number設(shè)置成了0,由于它小于10,Python進(jìn)入while循環(huán)。進(jìn)入循環(huán)后,我們以步長(zhǎng)1的方式往上數(shù)(見第二行),因此number為1。接下來(lái),if語(yǔ)句檢查number與3的求積運(yùn)算結(jié)果。如果結(jié)果為<10,就讓Python執(zhí)行余下的代碼,將結(jié)果打印出來(lái);如果結(jié)果為>=10,就執(zhí)行break語(yǔ)句,中斷循環(huán)。482.4.1.1while語(yǔ)句123\\\
如果要返回到循環(huán)開頭,并根據(jù)條件測(cè)試結(jié)果決定是否繼續(xù)執(zhí)行循環(huán),可使用continue語(yǔ)句,它不像break語(yǔ)句那樣不再執(zhí)行余下的代碼并退出整個(gè)循環(huán)。例如,來(lái)看一個(gè)從1數(shù)到10,但只打印其中偶數(shù)的循環(huán):number=0whilenumber<10:number+=1ifnumber%2==0:continueprint(number)492.4.1.1while語(yǔ)句
首先將number設(shè)置成了0,由于它小于10,Python進(jìn)入while循環(huán)。進(jìn)入循環(huán)后,我們以步長(zhǎng)1的方式往上數(shù)(見第二行),因此number為1。接下來(lái),if語(yǔ)句檢查number與2的求模運(yùn)算結(jié)果。如果結(jié)果為0(意味著number可被2整除),就執(zhí)行continue語(yǔ)句,讓Python忽略余下的代碼,并返回到循環(huán)的開頭。如果當(dāng)前的數(shù)字不能被2整除,就執(zhí)行循環(huán)中余下的代碼,Python將這個(gè)數(shù)字打印出來(lái):13579502.4.3range()函數(shù)
Python內(nèi)置的range()函數(shù)可以迭代地生成一組數(shù)字序列,這個(gè)功能在循環(huán)語(yǔ)句中特別有用,尤其是跟需要計(jì)數(shù)的for循環(huán)語(yǔ)句搭配使用,可以大大降低代碼量。例如,在2.4.1.2的代碼中,打印0-9這10個(gè)數(shù)字需要首先創(chuàng)建一個(gè)包含0-9這10個(gè)數(shù)字的數(shù)組,而通過range()函數(shù)能夠更為輕易的實(shí)現(xiàn)該功能:512.4.3range()函數(shù)>>>fornumberinrange(10):...print(number)...0123456789522.4.3range()函數(shù)
如果range()函數(shù)只有一個(gè)參數(shù),那么參數(shù)表示數(shù)列的結(jié)束數(shù)字(小于該參數(shù)的最大數(shù)字),且默認(rèn)數(shù)字從0開始,例如輸入?yún)?shù)5,則生成從0開始直到小于5的最大數(shù)字(也就是4)的數(shù)列,即“01234”。如果為range()函數(shù)傳入兩個(gè)參數(shù),則第1個(gè)參數(shù)表示起始數(shù)字,第2個(gè)參數(shù)表示結(jié)束數(shù)字(小于該參數(shù)的最大數(shù)字),例如range(5,10)生成從5開始直到小于10的最大數(shù)字(也就是9)的數(shù)列,即“56789”。如果為range()函數(shù)傳入了第3個(gè)參數(shù),則第3個(gè)參數(shù)表示步長(zhǎng),即每隔多少取一個(gè)數(shù)字,例如range(0,10,3)表示從0開始直到9每隔3取一個(gè)數(shù)字組成的數(shù)列,即“0369”。532.4.3len()函數(shù)
len()函數(shù)用于獲取一個(gè)數(shù)組的長(zhǎng)度,如果將range()函數(shù)與len()函數(shù)相結(jié)合,那么就可以實(shí)現(xiàn)遍歷數(shù)組的功能:>>>arr=['a','b','c','d','e']>>>foriinrange(len(arr)):...print(i,arr[i])...0a1b2c3d4e542.5常見的Python函數(shù)
C、C++、Java、Ruby、Perl、Lisp……眾多編程語(yǔ)言的程序都是由函數(shù)和類所組成的,當(dāng)然Python程序里包含的不是函數(shù)就是類。552.5常見的Python函數(shù)
函數(shù)猶如小型程序,可用來(lái)執(zhí)行特定的操作。Python提供了很多函數(shù),可用來(lái)完成很多神奇的任務(wù)。用戶也可以自己編寫函數(shù)(這將在后面更詳細(xì)地介紹)。前面用的print()就是一個(gè)函數(shù)。562.5常見的Python函數(shù)
再比如,在學(xué)習(xí)運(yùn)算符和表達(dá)式的時(shí)候曾用到**表示乘方運(yùn)算,實(shí)際上可以不使用這個(gè)運(yùn)算符,而使用pow()函數(shù)。2**38pow(2,3)8
這里的pow()就是Python中的一個(gè)標(biāo)準(zhǔn)函數(shù),也稱為內(nèi)置函數(shù)。使用這種形式的函數(shù)稱為調(diào)用函數(shù):用戶向它提供實(shí)參(即實(shí)際傳給函數(shù)的參數(shù),這里是2和3),而它返回一個(gè)值。鑒于函數(shù)調(diào)用返回一個(gè)值,因此它們也是一個(gè)表達(dá)式。572.5常見的Python函數(shù)1.print()函數(shù)
本節(jié)之前的代碼實(shí)際上已經(jīng)多次用到了print()函數(shù),這里專門對(duì)其用法進(jìn)行介紹。print()函數(shù)主要用于打印輸出,這在任何編程語(yǔ)言中都是最基本的功能。需要注意的是,print只有在Python3中才是一個(gè)函數(shù),而在Python2中卻并不是函數(shù),這就意味著在Python2中print后面不需要括號(hào)。本書均以Python3為例進(jìn)行編寫,因此讀者會(huì)發(fā)現(xiàn)本書代碼中print后面總是帶著括號(hào),而其參數(shù)都寫著括號(hào)中。
print()函數(shù)的第一個(gè)接受參數(shù)是期望打印的數(shù)據(jù),這可以是字符串、數(shù)值、布爾、列表、字典等任何類型或其變量。582.5常見的Python函數(shù)1.print()函數(shù)
下列代碼顯示了使用print()函數(shù)輸出各個(gè)類型數(shù)據(jù)的結(jié)果:>>>x=12>>>print(x)#打印數(shù)值變量12>>>s='python'>>>print(s)#打印字符串變量python>>>L=[1,2,3]>>>print(L)#打印列表變量[1,2,3]>>>t=('a','b','c')>>>print(t)#打印元組變量('a','b','c')>>>b=True>>>print(b)#打印布爾變量True>>>d={'a':1,'b':2}>>>print(d)#打印字典變量{'b':2,'a':1}可以看到,無(wú)論是何種數(shù)據(jù)類型,print()函數(shù)都有辦法以最合適的方式進(jìn)行輸出。592.5常見的Python函數(shù)1.print()函數(shù)
在print()函數(shù)中有兩個(gè)重要的參數(shù),即sep和end。這兩個(gè)參數(shù)可以讓用戶在輸出時(shí)自定義間隔符和結(jié)束符。這里用下面的代碼來(lái)說(shuō)明這兩個(gè)功能:>>>print("hello","world","and","python")helloworldandpython>>>print("hello","world","and","python",sep=",")hello,world,and,python>>>print("hello","world","and","python",end=".")helloworldandpython.602.5常見的Python函數(shù)1.print()函數(shù)
除了屏幕輸出(也就是將數(shù)據(jù)結(jié)果顯示在計(jì)算機(jī)屏幕上)以外,print()也支持文件輸出(將數(shù)據(jù)輸出到文件中進(jìn)行保存)。為了保存文件,print()提供了一個(gè)名為file的參數(shù),例如:>>>out=open("test.txt","w")>>>print("Helloworld",file=out)
上述代碼首先打開了一個(gè)文件,名為test.txt,然后使用print()函數(shù)將字符串“Helloworld”寫入到了文件中。612.5常見的Python函數(shù)1.print()函數(shù)
在打印輸出大量字符串時(shí),格式化功能特別重要,這讓整個(gè)輸出語(yǔ)句在格式上顯得更為清晰,尤其是當(dāng)需要將不同類型的變量拼接在一起的時(shí)候。Python3中的print()函數(shù)提供了兩種格式化的方式:一種方式兼容了Python2格式化的語(yǔ)法,另一種方式采用了全新的format()函數(shù)。下面先來(lái)看看傳統(tǒng)的類C語(yǔ)言的格式化輸出方式:>>>str="Helloworld">>>length=len(str)>>>print("字符串%s的長(zhǎng)度是:%d"%(str,length))字符串Helloworld的長(zhǎng)度是:11
上述代碼的第3行中的%s表示此處需要一個(gè)字符串進(jìn)行填充,%d表示此處需要一個(gè)帶符號(hào)的整數(shù)進(jìn)行填充,而后面的%(str,length)則表示用str和length這兩個(gè)變量分別填充前面的%s和%d,622.5常見的Python函數(shù)1.print()函數(shù)
另一種格式化方式是使用format()函數(shù),這讓輸出格式更為清晰:>>>str="Helloworld">>>length=len(str)>>>print("字符串{0}的長(zhǎng)度是:{1}".format(str,length))字符串Helloworld的長(zhǎng)度是:11
在第3行代碼中,{0}表示第1個(gè)占位符,{1}表示第2個(gè)占位符,以此類推;format()函數(shù)的第1個(gè)參數(shù)用于填充{0},第2個(gè)參數(shù)用于填充{1},以此類推。在使用format()時(shí)并不區(qū)分填充占位符的變量的實(shí)際類型,這使得格式化工作更為輕松。632.5常見的Python函數(shù)1.print()函數(shù)
format()的另一個(gè)好處是可以使用數(shù)組下標(biāo),例如:>>>data=["Xiaoming",20]>>>print("{0[0]}is{0[1]}yearsold.".format(data))Xiaomingis20yearsold.
在以上代碼中,{0[0]}表示使用data的第1個(gè)值,{0[1]}表示使用data的第2個(gè)值,因此分別把data的“Xiaoming”和20這兩個(gè)值填充到前、后兩個(gè)占位符,得到第3行所示的最終結(jié)果。642.5常見的Python函數(shù)2.title()函數(shù)
title()以首字母大寫的方式顯示每個(gè)單詞,即將每個(gè)單詞的首字母都改為大寫。這很有用,因?yàn)槟憬?jīng)常需要將名字視為信息。例如,你可能希望程序?qū)⒅祃isa、Lisa和LISA視為同一個(gè)名字,并將它們都顯示為L(zhǎng)isa。例如:>>>name=”lisa”>>>print(“Ilike”+name.tilte())IlikeLisa
在這個(gè)示例中,小寫的字符串“l(fā)isa”存儲(chǔ)到了變量name中。在print()語(yǔ)句中,title()函數(shù)出現(xiàn)在這個(gè)變量的后面。652.5常見的Python函數(shù)2.title()函數(shù)
方法函數(shù)title()是Python可對(duì)數(shù)據(jù)執(zhí)行的操作。在name.title()中,name后面的句點(diǎn)“
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 會(huì)計(jì)師事務(wù)所培訓(xùn)講師面試指南與答案
- 信息技術(shù)部副經(jīng)理面試題集
- 長(zhǎng)虹集團(tuán)戰(zhàn)略規(guī)劃部經(jīng)理崗位資格考試題集含答案
- 通信行業(yè)網(wǎng)絡(luò)規(guī)劃師的職責(zé)與面試題
- 2025年新型環(huán)保材料開發(fā)可行性研究報(bào)告
- 2025年生物制藥科技孵化器項(xiàng)目可行性研究報(bào)告
- 2025年新能源智能電網(wǎng)建設(shè)可行性研究報(bào)告
- 2025年個(gè)性化訂制家具項(xiàng)目可行性研究報(bào)告
- 2025年家庭智能監(jiān)控系統(tǒng)項(xiàng)目可行性研究報(bào)告
- 2026年華東政法大學(xué)單招職業(yè)適應(yīng)性考試題庫(kù)及答案詳解1套
- 《電力市場(chǎng)概論》 課件 第七章 發(fā)電投資分析
- 2024年新蘇教版四年級(jí)上冊(cè)科學(xué)全冊(cè)知識(shí)點(diǎn)(復(fù)習(xí)資料)
- 題庫(kù)二附有答案
- 市場(chǎng)拓展與銷售渠道拓展方案
- 工地大門施工協(xié)議書
- 文史哲與藝術(shù)中的數(shù)學(xué)智慧樹知到期末考試答案章節(jié)答案2024年吉林師范大學(xué)
- 鐵血將軍、建軍元?jiǎng)?葉挺 (1)講解
- 2023年西門子PLC知識(shí)考試題(附含答案)
- 鼻鼽(變應(yīng)性鼻炎)診療方案
- 消防應(yīng)急疏散和滅火演習(xí)技能培訓(xùn)
- 流產(chǎn)診斷證明書
評(píng)論
0/150
提交評(píng)論