




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Python程序設(shè)計(jì)與應(yīng)用--面向數(shù)據(jù)分析與可視化
Python語言概述第一章1.1程序設(shè)計(jì)語言簡介程序是對特定問題的解決方法步驟的描述;從計(jì)算機(jī)角度來講,程序是用計(jì)算機(jī)語言描述解決問題的方法步驟。程序與程序設(shè)計(jì)語言程序程序設(shè)計(jì)語言用于書寫計(jì)算機(jī)程序的一組記號和一組規(guī)則。語法語義語用程序設(shè)計(jì)語言有3因素程序設(shè)計(jì)語言語法表示程序的結(jié)構(gòu)或形式,亦即表示構(gòu)成語言的各個(gè)記號之間的組合規(guī)律,但不涉及這些記號的特定含義,也不涉及使用者。語法變量名=表達(dá)式;語義表示程序的含義,亦即表示按照各種方法所表示的各個(gè)記號的特定含義,但不涉及使用者。語義a=200;語用表示程序與使用者的關(guān)系。機(jī)器語言是一種指令集的體系。指令是計(jì)算機(jī)能夠識別并執(zhí)行的固定在計(jì)算機(jī)硬件中的二進(jìn)制代碼。每種處理器都有自己專用的機(jī)器指令集合。機(jī)器語言1011000000000011;將3放進(jìn)累加器中0010110000001000;累加器的值與8相加,結(jié)果仍然在累加器中11110100;停機(jī)結(jié)束在8086/8088兼容機(jī)上,用機(jī)器語言完成求3+8程序設(shè)計(jì)語言的發(fā)展機(jī)器語言有如下特點(diǎn):(1)與計(jì)算機(jī)硬件結(jié)構(gòu)密切相關(guān),不同結(jié)構(gòu)CPU有著不同的機(jī)器語言;(2)二進(jìn)制數(shù)表示,指令操作碼、地址、操作數(shù)等都用二進(jìn)制數(shù)表示;(3)設(shè)計(jì)程序時(shí)需同步安排指令和操作數(shù)在存儲(chǔ)器中的存放位置;(4)每一條指令只能完成簡單運(yùn)算功能。用助記符號來表示計(jì)算機(jī)指令的符號語言。必須通過匯編程序?qū)⑺g成為計(jì)算機(jī)能夠理解、執(zhí)行的機(jī)器語言。匯編語言Mov
ax,3Addax,8應(yīng)用場合:(1)底層,硬件操作和高要求的程序優(yōu)化的場合;(2)驅(qū)動(dòng)程序、嵌入式操作系統(tǒng)和實(shí)時(shí)運(yùn)行程序。高級語言:是接近于人類自然語言和數(shù)學(xué)語言的程序設(shè)計(jì)語言統(tǒng)稱。源程序:用高級語言編寫的程序。源程序必須通過一個(gè)語言處理系統(tǒng)翻譯,才能為計(jì)算機(jī)系統(tǒng)執(zhí)行。高級語言main(){inti,s,a[10];for(i=0;i<10;i++)
scanf("%d",&a[i]);for(s=0,i=0;i<10;i++)s=s+a[i];printf("sum=%d",s);{用非機(jī)器語言書寫的程序必須進(jìn)行翻譯,即用高級語言或匯編語言編寫的程序必須翻譯成計(jì)算機(jī)能識別的指令序列,完成這一任務(wù)的程序稱為“語言處理程序”。語言處理程序匯編解釋編譯虛擬機(jī)用匯編語言編寫的程序稱為匯編語言源程序。匯編程序和連接程序?qū)R編語言所編寫的源程序翻譯成機(jī)器指令程序并生成可執(zhí)行的exe文件。匯編方式匯編連接源程序EXE文件執(zhí)行OBJ兩次掃描將匯編語言轉(zhuǎn)換成機(jī)器指令;處理源程序中的偽指令。匯編程序連接程序(1)能夠直接將源程序解釋運(yùn)行;(2)能夠?qū)⒃闯绦蚍g成某種中間代碼形式,對中間代碼進(jìn)行解釋來運(yùn)行。詞法分析語法分析語義分析中間代碼生成源程序執(zhí)行解釋程序解釋方式詞法分析從左到右一個(gè)字符一個(gè)字符地讀入源程序,即對構(gòu)成源程序的字符流進(jìn)行掃描,然后根據(jù)構(gòu)詞規(guī)則識別單詞(也稱單詞符號或符號)。語法分析在詞法分析的基礎(chǔ)上將單詞序列組合成各類語法短語。語法分析程序判斷源程序在結(jié)構(gòu)上是否正確。語義分析最實(shí)質(zhì)性的工作:第一次對源程序的語義作出解釋。按照語法分析器識別的語法范疇進(jìn)行語義檢查和處理。在高級程序設(shè)計(jì)語言翻譯中,語義分析階段的工作與目標(biāo)機(jī)器的體系結(jié)構(gòu)關(guān)系不密切。中間代碼生成中間代碼也叫中間語言,是源程序的一種內(nèi)部表示,不依賴目標(biāo)機(jī)的結(jié)構(gòu),復(fù)雜性介于源語言和機(jī)器語言之間。中間代碼的優(yōu)點(diǎn):邏輯結(jié)構(gòu)清楚;利于不同目標(biāo)機(jī)上實(shí)現(xiàn)同一種語言;利于進(jìn)行與機(jī)器無關(guān)的優(yōu)化;中間代碼可以被解釋執(zhí)行。編譯程序是把某種高級語言書寫的源程序翻譯成目標(biāo)語言程序。詞法分析語法分析語義分析中間代碼生成代碼優(yōu)化目標(biāo)代碼生成源程序EXE文件執(zhí)行編譯程序編譯方式生成目標(biāo)程序,執(zhí)行時(shí)僅僅執(zhí)行目標(biāo)程序,源程序和編譯程序不參與目標(biāo)程序執(zhí)行。效率較高。編譯方式源程序和解釋程序要參與到程序執(zhí)行過程中。執(zhí)行程序的控制權(quán)在解釋程序。解釋方式下執(zhí)行程序,須要重復(fù)多次掃描源程序,占用較多內(nèi)存。解釋方式編譯方式和解釋方式的區(qū)別虛擬機(jī)方式通過編譯器將源程序.py文件編譯成python字節(jié)碼文件.pyc。字節(jié)碼文件是一種中間格式,和硬件無關(guān)。虛擬機(jī)由軟件實(shí)現(xiàn),將字節(jié)碼文件轉(zhuǎn)換為可執(zhí)行的機(jī)器指令。源程序.py編譯字節(jié)碼文件.pycPython虛擬機(jī)取字節(jié)碼指令解釋執(zhí)行編譯型語言與解釋型語言編譯型語言所書寫的源程序一般需經(jīng)過編譯、鏈接兩個(gè)步驟完成“翻譯”工作。編譯型語言解釋型語言代表語言有C、C++、Pascal、swift等。使用專門的解釋器將源程序逐行解釋成特定平臺(tái)的機(jī)器碼并立即執(zhí)行。代表語言有JavaScript、Python、Perl、Ruby等。動(dòng)態(tài)語言與靜態(tài)語言在運(yùn)行時(shí)可以改變其結(jié)構(gòu)的語言。例如,新的函數(shù)、對象、甚至代碼可以被引進(jìn),已有的函數(shù)可以被刪除或是其他結(jié)構(gòu)上的變化。動(dòng)態(tài)語言靜態(tài)語言代表語言有:Object-C、C#、JavaScript、PHP、Python。運(yùn)行時(shí)代碼不可變的語言就是靜態(tài)語言代表語言有:C、C++等。動(dòng)態(tài)型語言與靜態(tài)型語言在運(yùn)行期間才去進(jìn)行數(shù)據(jù)類型檢查的語言,說的是數(shù)據(jù)類型。動(dòng)態(tài)型語言靜態(tài)型語言代表語言有:Python、Ruby、Erlang、JavaScript、swift、PHP、Perl。靜態(tài)語言的數(shù)據(jù)類型是在編譯時(shí)確定的,即運(yùn)行之前確定的。代表語言有:C、C++、C#、Java、Object-C等。強(qiáng)類型語言與弱類型語言一旦一個(gè)變量被指定了某個(gè)數(shù)據(jù)類型,如果不經(jīng)過強(qiáng)制類型轉(zhuǎn)換,那么其數(shù)據(jù)類型不變。強(qiáng)類型語言運(yùn)算時(shí)要求運(yùn)算數(shù)據(jù)類型要兼容。強(qiáng)類型語言弱類型語言代表語言有:java、.NET、C/C++、python。某一個(gè)變量被定義類型,該變量可以根據(jù)環(huán)境變化自動(dòng)進(jìn)行轉(zhuǎn)換,不需要經(jīng)過強(qiáng)制轉(zhuǎn)換。即:弱類型語言運(yùn)算時(shí)會(huì)自動(dòng)進(jìn)行隱式數(shù)據(jù)類型轉(zhuǎn)換。代表語言有:JavaScript、PHP、VB。1.2結(jié)構(gòu)化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)思想體現(xiàn)了人們抽象思維和復(fù)雜問題分解的基本原則與要求。結(jié)構(gòu)化技術(shù)的三個(gè)方面:結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化分析(SA)基于功能分解的分析方法,建立符合用戶需求的結(jié)構(gòu)化說明書。結(jié)構(gòu)化設(shè)計(jì)(SD)面向數(shù)據(jù)流的設(shè)計(jì)方法,完成軟件層次圖或者軟件結(jié)構(gòu)圖。結(jié)構(gòu)化編程(SP)通過函數(shù)、函數(shù)調(diào)用實(shí)現(xiàn)系統(tǒng)面向?qū)ο蟮某绦蛟O(shè)計(jì)反映了客觀世界由對象組成的本質(zhì)特點(diǎn)。面向?qū)ο蠹夹g(shù)的三個(gè)方面:面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蠓治觯∣OA)從客觀事物出發(fā),強(qiáng)調(diào)以現(xiàn)實(shí)世界的事物為中心來思考、認(rèn)識問題。面向?qū)ο笤O(shè)計(jì)(OOD)從事物本質(zhì)特點(diǎn)出發(fā),把它們抽象為類,作為系統(tǒng)的基本構(gòu)成單元。面向?qū)ο缶幊蹋∣OP)通過類、對象、繼承、消息機(jī)制等實(shí)現(xiàn)系統(tǒng)。1.3Python語言簡介Python的特的點(diǎn)(1)簡單直觀而且強(qiáng)大;(2)開源,任何人都可以為它做貢獻(xiàn);(3)代碼像純英語那樣容易理解;(4)適用于短期開發(fā)的日常任務(wù)。目標(biāo)(1)簡單易學(xué),面向?qū)ο螅唬?)免費(fèi)、開源;(3)解釋性,可移植性好;(4)豐富的跨平臺(tái)庫。優(yōu)點(diǎn)(1)運(yùn)行速度慢;(2)框架太多。缺點(diǎn)主要應(yīng)用領(lǐng)域(1)Web應(yīng)用開發(fā);
(2)自動(dòng)化運(yùn)維;(3)人工智能領(lǐng)域;(4)網(wǎng)絡(luò)爬蟲;(5)科學(xué)計(jì)算;(6)游戲開發(fā)1.4Python的工作模式命令行方式輸入語句運(yùn)行結(jié)果命令提示符>>>importos>>>i=os.system("cls")在命令行方式下,用戶輸入一條命令,系統(tǒng)解釋、執(zhí)行一條命令。腳本方式將所有需要執(zhí)行的所有語句按照特定的格式書寫形成一個(gè)腳本文件,然后將該腳本文件交由系統(tǒng)進(jìn)行解釋、執(zhí)行,這就是腳本方式。集成開發(fā)環(huán)境是一個(gè)綜合性工具軟件,把程序設(shè)計(jì)過程所需的各項(xiàng)功能有機(jī)集成到一起,在統(tǒng)一的圖形化操作界面下,為程序設(shè)計(jì)人員提供盡可能高效、便利、完整的服務(wù)。VC集成開發(fā)環(huán)境菜單欄Python提示符python的IDLE1.5Python的文件類型基本文件類型腳本文件使用python語言編寫的一段python代碼,以.py為擴(kuò)展名進(jìn)行保存,該文件就是python腳本文件,簡稱腳本。Python腳本文件可用文本編輯器進(jìn)行編輯、修改。最終需由python.exe解釋,在控制臺(tái)下運(yùn)行。字節(jié)碼文件字節(jié)碼文件是一種二進(jìn)制文件,是腳本文件經(jīng)過編譯后生成的文件,擴(kuò)展名為.pyc。字節(jié)碼文件加載速度有所提高,是一種跨平臺(tái)文件。只能由python虛擬機(jī)解釋執(zhí)行。在python交互命令窗口輸入以下命令:>>>importpy_compile>>>py_pile("f:\\pyapp\\myapp1-2.py")優(yōu)化字節(jié)碼文件優(yōu)化字節(jié)碼文件是對字節(jié)碼文件進(jìn)行優(yōu)化的結(jié)果(去掉了斷言以及斷行號和其它調(diào)式信息),擴(kuò)展名為.pyo。相比于.pyc文件更小,也可以提高加載速度。在python交互命令窗口輸入以下命令:>>>importpy_compile>>>py_pile(file="f:\\pyapp\\myapp1-2.py",cfile="myapp1-2.pyo",optimize=1)腳本文件中的基本概念語句是python腳本最基本的組織單位。賦值語句、表達(dá)式語句、條件語句、循環(huán)語句等。須嚴(yán)格遵守書寫規(guī)則:(1)井號(#):表示之后的字符為Python注釋;(2)換行(\n):語句結(jié)束標(biāo)志,一般一行為一句;(3)反斜線(\):繼續(xù)上一行,表示本行和上一行是一句;(4)分號(;):可以把多句寫在一行,中間用分號分隔;(5)冒號(:):將代碼塊的頭和體分開;(6)語句(代碼塊)用縮進(jìn)塊的方式體現(xiàn),不同的縮進(jìn)深度分隔不同的代碼塊。語句函數(shù)是完成特定功能的可重復(fù)使用的代碼段。通過函數(shù)能提高應(yīng)用的模塊性以及代碼的重復(fù)利用率。在python中,函數(shù)的應(yīng)用非常廣泛。input()、print()、range()、len()函數(shù)等都是Python的內(nèi)置函數(shù),可以直接使用。除了內(nèi)置函數(shù)外,Python還支持用戶自定義函數(shù),達(dá)到一次編寫、多次調(diào)用的目的。函數(shù)python是面向?qū)ο笳Z言,類和對象是面向?qū)ο缶幊痰暮诵膬?nèi)容。通常把具有相同特征(數(shù)據(jù)元素)與行為(功能)的事物抽象為一個(gè)類。把類實(shí)例化即可以得到一個(gè)對象。類所具有的封裝性、繼承性、多態(tài)性等特點(diǎn),使得軟件開發(fā)的更加方便,閱讀起來也十分的方便。類與對象把函數(shù)根據(jù)它們之間的相關(guān)性進(jìn)行分組,放在不同的文件中,這些擴(kuò)展名為.py的文件稱為一個(gè)模塊(Module)。使用模塊的好處:提高了代碼的可維護(hù)性。編寫代碼不必從零開始。可以避免函數(shù)名和變量名沖突。模塊包由模塊構(gòu)成,將功能相關(guān)的多個(gè)模塊文件結(jié)構(gòu)化組合形成包。通過“包.模塊名”來指定模塊。只要頂層的包名不沖突,則所有模塊都不會(huì)沖突。包具有某些功能的模塊和包都可以被稱作庫。模塊由諸多函數(shù)組成,包由諸多模塊組成,庫中可以包含包、模塊和函數(shù)。python中,庫、包、模塊實(shí)際上都是模塊,只不過是個(gè)體和集合的區(qū)別。(1)內(nèi)置模塊和標(biāo)準(zhǔn)庫(2)第三方庫庫理解腳本文件的構(gòu)成第1行:指定PythonScript的編碼格式第2-4行:文件的Document部分第5行:導(dǎo)入需要的模塊第6-14行:定義全局變量、類、函數(shù)部分第16行:程序入口__name__腳本文件的執(zhí)行過程1.6理解Python的語言特性動(dòng)態(tài)型語言顯式聲明不被要求,因?yàn)轭愋唾x值發(fā)生在運(yùn)行階段。在Python中,定義浮點(diǎn)型變量f的方法如下:f=0.5Sname=“章雨”M=[1,2,3,4,5]類型聲明在強(qiáng)類型中,不管在編譯時(shí)還是在運(yùn)行時(shí),一旦某個(gè)類型賦值給某個(gè)變量,它會(huì)持有這個(gè)類型,并且不能和其他不兼容的類型在計(jì)算某個(gè)表達(dá)式時(shí)進(jìn)行混合計(jì)算。強(qiáng)類型data=5 #在runtime時(shí),被賦值為整型data=data+"xiaoming" #errorPython語言是動(dòng)態(tài)類型的強(qiáng)類型動(dòng)態(tài)語言。Python程序設(shè)計(jì)與應(yīng)用--面向數(shù)據(jù)分析與可視化
Python語言基礎(chǔ)第二章2.1Python的基本語法規(guī)則注釋規(guī)則1代碼縮進(jìn)2編碼規(guī)范3注釋是指在程序代碼中添加的標(biāo)注性的文字。注釋規(guī)則1單行注釋1多行注釋2包含在一對三引號('''……''')或者("""……""")之間。單行注釋以“#”開頭,后面的文字直到行尾都作為注釋'''注釋內(nèi)容1注釋內(nèi)容2……'''#行注釋
"""注釋內(nèi)容1注釋內(nèi)容2……"""代碼縮進(jìn)2代碼縮進(jìn)是指在每一行代碼左端空出一定長度的空白,表示程序的邏輯結(jié)構(gòu)。同層語句具有相同縮進(jìn)。一般遞進(jìn)4個(gè)空格每個(gè)import語句只導(dǎo)入一個(gè)模塊,盡量避免一次導(dǎo)入多個(gè)模塊。建議每行不超過80個(gè)字符。使用必要的空行可以增加代碼的可讀性。不要在行尾添加分號“;”,盡量不要用分號將兩條命令放在同一行。避免在循環(huán)中使用+和+=運(yùn)算符累加字符串。適當(dāng)使用異常處理結(jié)構(gòu)提高程序容錯(cuò)性運(yùn)算符兩側(cè)、函數(shù)參數(shù)之間、逗號“,”兩側(cè)建議使用空格進(jìn)行分隔。編碼規(guī)范32.2Python數(shù)據(jù)類型布爾類型8字符串類型2集合類型7數(shù)字類型1列表類型3元組類型4日期時(shí)間類型6字典類型5數(shù)字類型1Python支持4種不同的數(shù)值類型。(1)整型(int)通常被稱為整型或整數(shù),是正整數(shù)或負(fù)整數(shù),不帶小數(shù)點(diǎn)。(2)長整型(long)可以表示無限大小的整數(shù),在數(shù)字后面加上一個(gè)大寫L或小寫l。(3)浮點(diǎn)型(float)由整數(shù)部分與小數(shù)部分組成,浮點(diǎn)型可以使用科學(xué)記數(shù)法表示。(4)復(fù)數(shù)(complex)復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成,可以用a+bj或complex(a,b)表示。字符串類型2字符串是一個(gè)由字符組成的序列。字符串常量使用單引號(')或雙引號(")括起來。例如:'我是一個(gè)字符串'"我是另一個(gè)字符串"例如,輸出字符串LearnPython,代碼如下:>>>print("LearnPython")轉(zhuǎn)義字符:在字符串中經(jīng)常會(huì)出現(xiàn)一些特殊的字符,這些字符以“\”開頭,稱其為轉(zhuǎn)義字符(即賦予這些字符新的含義)。>>>print("Ilike\"python\"")Ilike"python">>>print("zhang\nwang\nli\nzhao")zhangwanglizhao前面介紹的字符串都是處理ASCII碼字符的。使用一個(gè)字節(jié)存儲(chǔ)一個(gè)字符。Unicode是國際組織制定的跨平臺(tái)字符編碼方案,以滿足跨語言、跨平臺(tái)進(jìn)行文本轉(zhuǎn)換、處理的要求。如果要在程序中處理中文字符串,則需要使用Unicode字符串。Unicode字符串只要在字符串前面加上u或U前綴即可,例如:u"我是Unicode字符串。"字符串的創(chuàng)建創(chuàng)建字符串很簡單,只要為變量分配一個(gè)字符串即可。例如:var1='HelloWorld!'var2="PythonRunoob"字符串的運(yùn)算a的默認(rèn)值為"Hello",b的默認(rèn)值為"Python"a+b輸出結(jié)果:IlikePythona*2輸出結(jié)果:IlikeIlikea[1]輸出結(jié)果:
a[1:4]輸出結(jié)果:liH不在變量a中P不在變量a中列表類型3列表(List)是一組有序存儲(chǔ)的數(shù)據(jù)。列表具有如下特性:和變量一樣,每個(gè)列表都有一個(gè)唯一標(biāo)識它的名稱。列表的數(shù)據(jù)元素的類型可以不同。每個(gè)列表元素都有索引和值兩個(gè)屬性,索引是一個(gè)從0開始的整數(shù),用于標(biāo)識元素在列表中的位置;值當(dāng)然就是元素對應(yīng)的值。>>>list1=['physics','chemistry',2019,2020]>>>list2=[1,2,3,4,"zhang"]>>>list3=["a","b","c","d"](1)形式上:所有元素都放在一對方括號里面,相鄰元素之間逗號分隔。(2)列表索引從0開始,列表中的元素個(gè)數(shù)沒有限制。(3)列表可以存儲(chǔ)Python支持的任何類型的數(shù)據(jù),且同一個(gè)列表中元素的類型可以不同。(4)通常情況下,同一列表中只放入同一類型的數(shù)據(jù),這樣可以提高程序的可讀性。列表的創(chuàng)建在Python中,創(chuàng)建列表的方法有兩種。一種是使用方括號直接創(chuàng)建列表;另一種是使用內(nèi)置函數(shù)list()來創(chuàng)建列表。(1)使用方括號直接創(chuàng)建列表一般使用“=”將它賦值給某個(gè)變量,具體格式如下:listname=[element1,element2,element3,……,elementn]其中,listname表示變量名;element1,……,elementn表示列表元素。num=[100,200,300,400,500,600,70.5]name=["python語言","程序設(shè)計(jì)",2020]program=["C語言","Python","VB"]emptylist=[](2)使用list()函數(shù)創(chuàng)建列表Python提供了一個(gè)內(nèi)置函數(shù)list(),可將其他數(shù)據(jù)類型轉(zhuǎn)換為列表類型。訪問列表的元素(1)使用元素引用運(yùn)算符“[]”使用元素引用運(yùn)算符“[]”來訪問列表中的元素,同樣也可以使用“[]”截取字符。list1=['physics','chemistry',2019,2020]list2=[1,2,3,4,5,6,7]print("list1[0]:",list1[0])print("list2[1:5]:",list2[1:5])運(yùn)行結(jié)果:list1[0]:physicslist2[1:5]:[2,3,4,5](2)“[]”的幾個(gè)特殊用法Python中,經(jīng)常會(huì)用到[-1]、[:-1]、[::-1]、[m::-1]等幾種[]的特殊格式。importnumpyasnpa=[1,2,3,4,5]print(a)#結(jié)果為[12345]print(a[-1]) #取最后一個(gè)元素,結(jié)果為[5]print(a[:-1]) #除了最后一個(gè)取全部,結(jié)果為[1234]print(a[::-1]) #取從后向前(相反)的元素,結(jié)果為[54321]print(a[2::-1])#取從下標(biāo)為2的元素翻轉(zhuǎn)讀取,結(jié)果為[321]遍歷列表就是一個(gè)一個(gè)地訪問列表元素。(1)可以使用for語句和range()函數(shù)遍歷列表索引通過索引依次訪問每個(gè)列表元素,方法如下:foriinrange(len(list)):
訪問list[i]遍歷列表元素languagelist=['C++','C#','Java','Python']foriinrange(len(languagelist)):print(languagelist[i]);程序的運(yùn)行結(jié)果如下:C++C#JavaPython(2)使用for語句和enumerate()函數(shù)
同時(shí)遍歷列表的元素索引和元素值。格式如下:
for索引,元素值inenumerate(list):
訪問索引和元素值languagelist=['C++','C#','Java','Python']forindex,valueinenumerate(languagelist):print("第%d個(gè)元素值是【%s】"%(index,value));第0個(gè)元素值是【C++】第1個(gè)元素值是【C#】第2個(gè)元素值是【Java】第3個(gè)元素值是【Python】使用del語句刪除列表元素格式:del列表名[索引]languagelist=['C++','C#','Java','Python']dellanguagelist[0]print(languagelist)運(yùn)行結(jié)果如下:['C#','Java','Python']刪除列表元素列表運(yùn)算符和列表有關(guān)的函數(shù)Python提供的和列表有關(guān)的函數(shù)包括兩類:一類是內(nèi)置函數(shù),一類是列表類的成員函數(shù)。和列表有關(guān)的內(nèi)置函數(shù)如表2.9所示。列表類的成員函數(shù)如表2.10所示。內(nèi)置函數(shù)list(seq)all(iterable)any(iterable)……成員函數(shù)list.append(x)list.extend(L)list.insert(i,x)……(1)通過append()函數(shù)添加列表元素用法:列表.append(新值)languagelist=['C++','C#','Java','Python']languagelist.append('javascript')print(languagelist)運(yùn)行結(jié)果如下:['C++','C#','Java','Python','javascript']常見函數(shù)舉例(2)通過insert()函數(shù)添加列表元素用法:列表.insert(插入位置,新值)languagelist=['C++','C#','Java','Python']languagelist.insert(1,'javascript')print(languagelist)運(yùn)行結(jié)果如下:['C++','javascript','C#','Java','Python'](3)通過extend()函數(shù)添加列表元素用法:列表1.extend(列表2)languagelist1=['javascript','Java']languagelist2=['C++','C#']languagelist1.extend(languagelist2)print(languagelist1)運(yùn)行結(jié)果如下:['javascript','Java','C++','C#'](4)使用index()函數(shù)獲取列表中某個(gè)元素的索引格式:列表.index(元素值)languagelist=['C++','C#','Java','Python']print(languagelist.index('Java'))print(languagelist.index('Python'))運(yùn)行結(jié)果如下:02元組類型4Python的元組與列表類似,是由若干元素所構(gòu)成的序列。不同之處在于元組的元素不能修改。元組使用小括號,列表使用方括號。元組具有如下特性:一經(jīng)定義,元組的內(nèi)容不能改變。元組元素可以存儲(chǔ)不同類型的數(shù)據(jù),可以是字符串、數(shù)字,甚至是元組。元組元素由圓括號括起來。元組的創(chuàng)建tup1=('physics','chemistry',2019,2020)tup2=(1,2,3,4,5,6,7,8,9,10)tup3="a","b","c","d"tup4=()#創(chuàng)建空元組tup5=(100,)#元組中只包含一個(gè)元素時(shí),需要在元素后面添加逗號print("tup1[0]:",tup1[0])print("tup2[2:7]:",tup2[2:7])print("tup5[0]:",tup5[0])tup1[0]:physicstup2[2:7]:(3,4,5,6,7)tup5[0]:100訪問元組的元素元組與字符串類似,下標(biāo)索引從0開始,可以進(jìn)行截取、組合等操作,設(shè)有元組T=(‘spam’,‘Spam’,‘SPAM!’),引用運(yùn)算舉例如表2.11所示。常見運(yùn)算符(1)訪問元素與列表一樣,可以使用索引訪問元組元素。格式:元組[索引]t=(1,2,3,4)print(t[0])print(t[3])元組的使用運(yùn)行結(jié)果:14(2)遍歷元組格式如下:foriinrange(len(tuple)):
訪問tuple[i]t=('C++','C#','Java','Python')foriinrange(len(t)):print(t[i]);運(yùn)行結(jié)果如下:C++C#JavaPython(3)使用for語句和enumerate()函數(shù)遍歷元組t=('C++','C#','Java','Python')forindex,valueinenumerate(t):print("第%d個(gè)元素值是【%s】"%(index,value))程序的運(yùn)行結(jié)果如下:第0個(gè)元素值是【C++】第1個(gè)元素值是【C#】第2個(gè)元素值是【Java】第3個(gè)元素值是【Python】(4)排序元組的內(nèi)容不能改變,所以元組沒有sort()函數(shù)。可以將元組轉(zhuǎn)換為列表,然后再對列表排序,最后將排序后的列表轉(zhuǎn)換為元組。可以使用下面的方法將元組轉(zhuǎn)換為列表。列表對象=list(元組對象)將列表轉(zhuǎn)換為元組的方法如下:元組對象=tuple(列表對象)t=('C++','C#','Java','Python')l=list(t)l.sort()t=tuple(l)print(t)運(yùn)行結(jié)果如下:('C#','C++','Java','Python')使用reverse()函數(shù)反序排列。t=('C#','C++','Java','Python')l=list(t)l.reverse()t=tuple(l)print(t)運(yùn)行結(jié)果如下:('Python','Java','C++','C#')(1)元組是不可變數(shù)據(jù)類型。元組可以存儲(chǔ)不同的數(shù)據(jù)類型,采用元組存儲(chǔ)數(shù)據(jù)可以防止別人隨意篡改,因此常常用來保存比較重要的、不需要經(jīng)常修改的數(shù)據(jù)。(2)元組的不可變是指元組的元素不可以修改、增加、刪除。(3)元組所指向的內(nèi)存實(shí)際上保存的是元組內(nèi)數(shù)據(jù)的內(nèi)存地址集合。元組一旦建立,這個(gè)集合就不能增加、修改、刪除,一旦集合內(nèi)的地址發(fā)生改變,必須重新分配元組空間來保存新的地址集。(4)當(dāng)元組中存在可變的數(shù)據(jù)類型時(shí),可變數(shù)據(jù)類型的內(nèi)容可以修改。使用元組時(shí)應(yīng)注意的問題(1)列表屬于可變序列,元素可以任意修改和刪除。(2)列表可以用append()、extend()、insert()、remove()等函數(shù)修改列表。但是元組沒有此類方法,元組中不能夠刪除元素,只能刪除整個(gè)元組。(3)列表、元組都可以用切片的形式訪問。(4)元組比列表的訪問和處理速度快,所以只需要對元素進(jìn)行訪問,而不進(jìn)行任何修改時(shí),建議使用元組。(5)列表不能作為字典的鍵,但是元組可以。元組和列表的區(qū)別字典類型5字典是Python提供的一種常用的數(shù)據(jù)類型,用于存放具有映射關(guān)系的數(shù)據(jù)。比如有一份成績表數(shù)據(jù),語文:85,數(shù)學(xué):93,英語:76。字典的構(gòu)成元素是形如key:value的鍵值對,其中key和value之間用英文冒號分隔,鍵值對之間用逗號分隔,整個(gè)字典包括在{}中。{'語文':85,'數(shù)學(xué)':93,'英語':76}字典相當(dāng)于保存了兩組數(shù)據(jù),其中一組數(shù)據(jù)是關(guān)鍵數(shù)據(jù)(被稱為key);另一組數(shù)據(jù)可通過key來訪問(被稱為value)。創(chuàng)建字典創(chuàng)建字典有兩種基本方法一是使用大括號語法來創(chuàng)建字典二是使用dict()函數(shù)來創(chuàng)建字典實(shí)際上,dict是一種類型,它就是Python中的字典類型。(1)使用大括號語法來創(chuàng)建字典格式如下:d={key1:value1,key2:value2,……}其中:鍵值一般是唯一的,如果重復(fù),最后的一個(gè)鍵值對會(huì)替換前面的鍵值。值可以取任何數(shù)據(jù)類型,如字符串、數(shù)字或元組等。(2)使用dict()函數(shù)創(chuàng)建字典函
數(shù)名功
能clear()用于清空字典中所有的key:value對,對一個(gè)字典執(zhí)行clear()方法之后,該字典就會(huì)變成一個(gè)空字典get()根據(jù)key來獲取value,它相當(dāng)于方括號語法的增強(qiáng)版,當(dāng)使用方括號語法訪問并不存在的key時(shí),字典會(huì)引發(fā)KeyError錯(cuò)誤;但如果使用get()方法訪問不存在的key,該方法會(huì)簡單地返回None,不會(huì)導(dǎo)致錯(cuò)誤update()使用一個(gè)字典所包含的key:value對來更新已有的字典。在執(zhí)行update()方法時(shí),如果被更新的字典中已包含對應(yīng)的key:value對,那么原value會(huì)被覆蓋;如果被更新的字典中不包含對應(yīng)的key:value對,則該key:value對被添加進(jìn)去items()分別用于獲取字典中的所有key:value對?;豥ict_itemskeys()分別用于獲取字典中的所有key。返回dict_keysvalues()分別用于獲取字典中的所有value。返回dict_values。Python不希望用戶直接操作items()、keys()、values()方法,但可通過list()函數(shù)把它們轉(zhuǎn)換成列表pop()用于獲取指定key對應(yīng)的value,并刪除這個(gè)key:value對popitem()用于隨機(jī)彈出字典中的一個(gè)key:value對。此處的隨機(jī)其實(shí)是假的,正如列表的pop()方法默認(rèn)彈出列表中最后一個(gè)元素,實(shí)際上字典的popitem()其實(shí)也是默認(rèn)彈出字典中最后一個(gè)key:value對。由于字典存儲(chǔ)key:value對的順序是不可知的,因此開發(fā)者感覺字典的popitem()方法是“隨機(jī)”彈出的,但實(shí)際上字典的popitem()方法總是彈出底層存儲(chǔ)的最后一個(gè)key:value對setdefault()用于根據(jù)key來獲取對應(yīng)value的值。但該方法有一個(gè)額外的功能,即當(dāng)程序要獲取的key在字典中不存在時(shí),該方法會(huì)先為這個(gè)不存在的key設(shè)置一個(gè)默認(rèn)的value,然后再返回該key對應(yīng)的valuefromkeys()使用給定的多個(gè)key創(chuàng)建字典,這些key對應(yīng)的value默認(rèn)都是None;也可以額外傳入一個(gè)參數(shù)作為默認(rèn)的value。該方法一般不會(huì)使用字典對象調(diào)用(沒什么意義),通常會(huì)使用dict類直接調(diào)用字典對象的常用方法(1)獲取字典長度len(字典名)d={'name':'小明','sex':'男','age':'18','score':'80'}print(len(d))運(yùn)行結(jié)果4字典的基本操作(2)訪問字典元素字典由字典元素組成。可以通過下面的方法獲取字典元素的值:字典名[key]其中:key是元素的鍵。d={'age':'18','score':'80','name':'Johney','sex':'Male'}print(d['name'])print(d['sex'])print(d['age'])print(d['score'])JohneyMale1880(3)修改字典元素可以通過賦值修改字典中添加元素,具體方法如下:字典[鍵]=值如果字典中不存在指定鍵,則添加;否則修改鍵值。d={'age':'18','score1':'80','name':'Johney','sex':'Male'}d['score2']=100print(d){'age':'18','score1':‘80','name':'Johney','sex':'Male‘,'score2’:100}(4)字典合并可以使用update()函數(shù)將2個(gè)字典合并,具體方法如下:字典1.update(字典2)功能:將字典2合并到字典1的后面。d1={'name‘:‘Tom','sex':'Male'}d2={'age':18,'score':80}d1.update(d2)print(d1){'name':'Tom','sex':'Male','age':18,'score':80}(5)刪除字典元素使用pop()方法可以刪除指定的字典元素,并返回刪除的元素值。方法如下:字典名.pop(鍵)d={'age':'18','score':'80','name':'Johney','sex':'Male’}m=d.pop('score')print(d)print(m){'age':'18','name':'Johney','sex':'Male’}80(6)判斷字典是否存在元素可以使用in關(guān)鍵字判斷字典中是否存在指定鍵的元素。語法如下:鍵in字典如果字典中存在指定鍵的元素,則表達(dá)式返回True;否則返回False。d={'age':'18','score':'80','name':'Johney','sex':'Male'}if'name1'ind:print(d['name1'])else:print('不包含鍵位name1的元素')(7)遍歷字典元素可以使用for..in語句遍歷字典的鍵和值,方法如下:遍歷字典的鍵forkeyin字典.keys():#遍歷字典的鍵訪問字典[key]遍歷字典的值forkeyin字典.values():#遍歷字典的值訪問字典[key]d={'age':'18','score':'80','name':'Johney','sex':'Male'}forkeyind.keys():#遍歷字典的鍵print('鍵'+key+'的值:'+d[key])鍵age的值:18鍵score的值:80鍵name的值:Johney鍵sex的值:Maled={'age':'18','score':'80','name':'Johney','sex':'Male'}forvalueind.values():#遍歷字典的值print(value)1880JohneyMale(8)清空字典使用clear()方法可以清空指定的字典所有元素。具體方法如下:字典名.clear()d={'age':'18','score':'80','name':'Johney','sex':'Male'}d.clear()print(d){}日期時(shí)間類型6Python提供了多個(gè)用于對日期和時(shí)間進(jìn)行操作的內(nèi)置模塊:如time模塊、datetime模塊和calendar模塊。time模塊是通過調(diào)用C庫實(shí)現(xiàn)的,所以有些方法在某些平臺(tái)上可能無法調(diào)用。datetime模塊提供的接口更直觀、易用,功能也更加強(qiáng)大。例如,有如下語句:>>>importtime;#引入time模塊>>>t=time.time()>>print("當(dāng)前時(shí)間戳為:",t)結(jié)果如下:當(dāng)前時(shí)間戳為:1580610019.4562716時(shí)間戳也稱為UNIX時(shí)間或POSIX時(shí)間,表示從格林尼治時(shí)間1970年1月1日0時(shí)0分0秒開始到現(xiàn)在所經(jīng)過的毫秒數(shù),為float類型。時(shí)間戳是個(gè)差值,其值與時(shí)區(qū)無關(guān)。importtimelocaltime=time.localtime(time.time())print("本地時(shí)間為:",localtime)localtime=time.asctime(time.localtime(time.time()))#使用asctime()函數(shù)print("本地時(shí)間為:",localtime)#格式化成形如2020-03-2011:45:39的形式print(time.strftime("%Y-%m-%d%H:%M:%S",time.localtime()))#格式化成形如SatMar2822:24:242020的形式print(time.strftime("%a%b%d%H:%M:%S%Y",time.localtime()))#將格式字符串轉(zhuǎn)換為時(shí)間戳a="SatMar2822:24:242020"print(time.mktime(time.strptime(a,"%a%b%d%H:%M:%S%Y")))本地時(shí)間為:time.struct_time(tm_year=2020,tm_mon=2,tm_mday=2,tm_hour=10,tm_min=56,tm_sec=17,tm_wday=6,tm_yday=33,tm_isdst=0)本地時(shí)間為:SunFeb210:56:1720202020-02-0210:56:17SunFeb0210:56:1720201585405464.0集合類型7集合由一組無序排列的元素組成,可以分為可變集合(set)和不可變集合(frozenset)??勺兗蟿?chuàng)建后可以添加元素,修改元素和刪除元素。而不可變集合創(chuàng)建后則不能改變。一般情況下,集合常用于兩種情況:①去重(如列表去重);②關(guān)系測試(如取交集、取并集、取差集等)。創(chuàng)建集合集合可以使用{}或者set()函數(shù)創(chuàng)建。注意:創(chuàng)建一個(gè)空集合必須用set()函數(shù),而不能使用{}。因?yàn)?,{}是用來創(chuàng)建一個(gè)空字典的。set1={'a','b','c','d','e'}set2=set([1,2,3,4,5,6,7,8,7,8,6])print(set1)print(set2){'a','b','c','d','e'}{1,2,3,4,5,6,7,8}用set()創(chuàng)建的集合是可變集合使用frozenset()方法創(chuàng)建不可變集合s=frozenset('pythonLangue')print(type(s))print(s)<class'frozenset'>frozenset({'n','y','a','h','e','L','o','p','','u','t','g'})(1)求集合長度格式:變量名=Len(集合名)s=set('pythonLangue')m=len(s)print(m)集合的基本操作12(2)遍歷集合元素格式:變量名=Len(集合名)s=set('pythonLangue')foreins:print(e)Lgaoyt
ephnu(3)添加元素使用add()方法在集合中添加元素。格式:集合.add(值)只能在可變集合中添加元素s=set('python')s.add('0')print(s){'y','t','p','n','0','h','o'}(4)更新集合使用update()方法將另外一個(gè)集合的元素添加到指定集合中。格式:集合.update(值)s=set([1,2,3])s.update([4,5,6])print(s){1,2,3,4,5,6}(5)刪除集合元素使用remove()方法刪除指定的集合元素。格式:集合名.remove(值)使用clear()方法可以清空指定的集合所有元素。格式:集合名.clear()s=set([1,2,4,5,6])s.remove(1)print(s)s.clear()print(s){2,4,5,6}set()(6)判斷集合是否存在元素可以使用in判斷集合中是否存在指定鍵的元素。格式:值in集合如果集合中存在指定值的元素,則表達(dá)式返回True;否則返回False。s=set([1,2,3,4,5,6,7,8,9])if2ins:print('存在'])else:print('不存在')操作符實(shí)例具體描述==A==B如果A等于B,則返回True;否則返回False!=A!=B如果A不等于B,則返回True;否則返回False<
A<B如果A是B的真子集,則返回True;否則返回False<=A<=B如果A是B的子集,則返回True;否則返回False>
A>B如果A是B的真超集,則返回True;否則返回False>=A>=B如果A是B的超集,則返回True;否則返回False集合的關(guān)系運(yùn)算s1=set([1,2])s2=set([1,2,3])ifs1!=s2:ifs1<s2:print('s1是s2的真子集')ifs2>s1:print('s2是s1的超集')s1是s2的真子集s2是s1的超集(1)并運(yùn)算使用|操作符計(jì)算兩個(gè)集合的并集。s=s1|s2使用union()方法計(jì)算兩個(gè)集合的并集s=s1.union(s2)(2)交運(yùn)算使用&操作符計(jì)算兩個(gè)集合的交集。s=s1&s2使用intersection()方法計(jì)算兩個(gè)集合的交集。s=s1.intersection(s2)集合的傳統(tǒng)運(yùn)算s=s1.union(s2)s1=set([1,2,3])s2=set([2,3,4])s3=s1|s2s4=s1.union(s2)s5=s1&s2s6=ersection(s2)(3)差運(yùn)算可以使用-操作符計(jì)算兩個(gè)集合的差集。s=s1-s2使用difference()方法計(jì)算兩個(gè)集合的差集s=s1.difference(s2)s1=set([1,2,3])s2=set([3,4])s3=s1-s2s4=s1.difference(s2)布爾類型8布爾值和布爾代數(shù)的表示完全一致。布爾值只有True、False兩種值可以直接用。Python中,使用True、False表示布爾值(請注意大小寫)。>>>TrueTrue>>>FalseFalse>>>3>2True>>>3>5False(1)and運(yùn)算and運(yùn)算又稱與運(yùn)算。運(yùn)算規(guī)則:只有所有參與運(yùn)算的表達(dá)式都為True,and運(yùn)算結(jié)果才是True。(2)or運(yùn)算or運(yùn)算又稱或運(yùn)算。運(yùn)算規(guī)則:只要其中有一個(gè)為True,or運(yùn)算結(jié)果就是True。(3)not運(yùn)算not運(yùn)算又稱非運(yùn)算,它是一個(gè)單目運(yùn)算符。運(yùn)算規(guī)則:把True變成False,F(xiàn)alse變成True。>>>TrueandTrueTrue>>>TrueandFalseFalse>>>FalseandFalseFalse>>>TrueorTrueTrue>>>TrueorFalseTrue>>>FalseorFalseFalse>>>notTrueFalse>>>notFalseTruePython在定義變量時(shí),不需要指定其數(shù)據(jù)類型,而是根據(jù)每次給變量所賦的值決定其數(shù)據(jù)類型。在需要時(shí),可以使用一組函數(shù)對常量和變量進(jìn)行類型轉(zhuǎn)換。數(shù)據(jù)類型轉(zhuǎn)換函
數(shù)名功
能int(x[,base])將x轉(zhuǎn)換為一個(gè)整數(shù)long(x[,base])將x轉(zhuǎn)換為一個(gè)長整數(shù)float(x)將x轉(zhuǎn)換為一個(gè)浮點(diǎn)數(shù)complex(real[,imag])創(chuàng)建一個(gè)復(fù)數(shù)str(x)將對象x轉(zhuǎn)換為字符串repr(x)將對象x轉(zhuǎn)換為表達(dá)式字符串eval(str)用來計(jì)算字符串中的有效Python表達(dá)式,并返回一個(gè)對象tuple(s)將s轉(zhuǎn)換為一個(gè)元組list(s)將s轉(zhuǎn)換為一個(gè)列表chr(x)將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)字符unichr(x)將一個(gè)整數(shù)轉(zhuǎn)換為Unicode字符ord(x)將一個(gè)字符轉(zhuǎn)換為它的整數(shù)值
hex(x)將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)十六進(jìn)制字符串oct(x)將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)八進(jìn)制字符串a(chǎn)="1";b=int(a)+1;print(b);b="1+2";print(eval(b));結(jié)果如下:23print(chr(65));print(ord('A'));結(jié)果如下:A65print(hex(8));print(oct(8)+str("12345"));結(jié)果如下:0x80o10123452.3Python中的不可變數(shù)據(jù)類型和可變數(shù)據(jù)類型如果該數(shù)據(jù)類型的對應(yīng)變量的值發(fā)生了改變,那么它對應(yīng)的內(nèi)存地址也會(huì)發(fā)生改變,這種數(shù)據(jù)類型稱不可變數(shù)據(jù)類型。修改不可變數(shù)據(jù)類型的數(shù)據(jù)時(shí),新的數(shù)值占有新的存儲(chǔ)空間,原來的數(shù)據(jù)仍舊存在。也就是說,不可變數(shù)據(jù)類型的數(shù)據(jù)修改后并不能覆蓋原來的數(shù)據(jù)。不可變數(shù)據(jù)類型基本概念當(dāng)該數(shù)據(jù)類型對應(yīng)變量的值發(fā)生了改變,那么它對應(yīng)的內(nèi)存地址不發(fā)生改變,這種數(shù)據(jù)類型稱可變數(shù)據(jù)類型。修改可變數(shù)據(jù)類型的數(shù)據(jù)時(shí),新的數(shù)值將覆蓋原有數(shù)據(jù)。也就是說,可變數(shù)據(jù)類型的數(shù)據(jù)修改后地址不發(fā)生改變??勺償?shù)據(jù)類型Python中基本數(shù)據(jù)類型的可變特性數(shù)值型數(shù)據(jù)的可變性a=100b=5.5print(id(a),type(a))print(id(b),type(b))a=200b=64.31print(id(a),type(a))print(id(b),type(b))140706058576640<class'int'>2309452211856<class'float'>140706058579840<class'int'>2309451778032<class'float'>整型是不可變數(shù)據(jù)類型浮點(diǎn)型是不可變數(shù)據(jù)類型字符串型數(shù)據(jù)的可變特性b="程序設(shè)計(jì)"print(id(b),type(b))b="python程序設(shè)計(jì)"print(id(b),type(b))3122008210480<class'str'>3122007833376<class'str'>字符串是不可變數(shù)據(jù)類型元組型、列表型數(shù)據(jù)的可變性c1=["101","102"]c=(1,2,c1)print(c,id(c),type(c))print(c1,id(c1),type(c1))c1[1]="302"print(c,id(c),type(c))print(c1,id(c1),type(c1))(1,2,['101','102'])3019218236480<class'tuple'>['101','102']3019219235968<class'list'>(1,2,['101','302'])3019218236480<class'tuple'>['101','302']3019219235968<class'list'>元組是不可變數(shù)據(jù)類型列表是可變數(shù)據(jù)類型列表型數(shù)據(jù)的可變性list=[1,"VC++","python","java",True]print(list,type(list),id(list))list.append("R")print(list,type(list),id(list))[1,'VC++','python','java',True]<class'list'>1914744949888[1,'VC++','python','java',True,'R']<class'list'>1914744949888列表型是可變數(shù)據(jù)類型字典型數(shù)據(jù)的可變特性tuple=(1)dic={1:2}d={tuple:1,"key2":2,"key3":300}print(d,type(d),id(d))d['key4']=800print(d,type(d),id(d)){1:1,'key2':2,'key3':300}<class'dict'>2403057131584{1:1,'key2':2,'key3':300,'key4':800}<class'dict'>2403057131584字典是可變數(shù)據(jù)類型集合型數(shù)據(jù)的可變特性s={1,"英語","計(jì)算機(jī)","數(shù)學(xué)",1}print(s,type(s),id(s))s.add("體育")print(s,type(s),id(s)){'英語',1,'計(jì)算機(jī)','數(shù)學(xué)'}<class'set'>1759935671872{1,'數(shù)學(xué)','體育','英語','計(jì)算機(jī)'}<class'set'>1759935671872集合是可變數(shù)據(jù)類型數(shù)據(jù)類型可
變
性數(shù)值型不可變數(shù)據(jù)類型字符串不可變數(shù)據(jù)類型元組不可變數(shù)據(jù)類型列表可變數(shù)據(jù)類型字典可變數(shù)據(jù)類型集合可變數(shù)據(jù)類型2.4標(biāo)識符與變量Python的標(biāo)識符命名規(guī)則如下:標(biāo)識符名字的第1個(gè)字符必須是字母或下劃線(_);標(biāo)識符名字的第1個(gè)字符后面可以由字母、下劃線(_)或數(shù)字(0~9)組成;標(biāo)識符名字是區(qū)分大小寫的。也就是說Score和score是不同的。標(biāo)識符命名規(guī)則合法:_score、Number、_score和number123不合法:123number、myscore、和my-scorePython的關(guān)鍵字是系統(tǒng)中自帶的具備特定含義的標(biāo)識符。在定義常量和變量時(shí)不能使用關(guān)鍵字作為變量名或常量名。系統(tǒng)關(guān)鍵字也稱保留字。是Python語言中已經(jīng)被賦予特定意義的一些單詞,開發(fā)程序時(shí),不可以作為變量、函數(shù)、類、模塊和其他對象的名稱來使用。andasassertbreakclasscontinuedefdelelifelseexceptfinallyforfromFalseglobalifimportinislambdanonlocalnotNoneorpassraisereturntryTruewhilewithyield
變量在程序運(yùn)行中,值(指向或內(nèi)容)允許改變的量稱為變量。任何一個(gè)變量都具有3個(gè)基本要素:變量名、數(shù)據(jù)類型和值。變量的變量名必須滿足標(biāo)識符的命名規(guī)則。變量不需要聲明,使用前都必須賦初值。變量賦初值以后,該變量才會(huì)被創(chuàng)建。變量賦初值規(guī)則:變量名=值。賦值號(=)運(yùn)算符左邊是一個(gè)變量名,右邊是存儲(chǔ)在變量中的值。單個(gè)變量賦初值>>>a=123#a是整數(shù)>>>a123>>>a='ABC'#a變?yōu)樽址?gt;>>print(a)ABC多個(gè)變量賦初值>>>a=b=c=1>>>print(a,b,c)111>>>a,b,c=1,2,"Python">>>print(a,b,c)12Python理解變量在計(jì)算機(jī)內(nèi)存中的表示a="NWU"(1)在內(nèi)存中創(chuàng)建了一個(gè)"NWU"的字符串;(2)在內(nèi)存中創(chuàng)建了一個(gè)名為a的變量,并讓它指向"NWU"a="NWU"b=aa="NPU"print(a,b)在Python中,對于不可變類型,變量的值并不存儲(chǔ)在變量對應(yīng)的內(nèi)存空間中。若要修改,需要重新分配內(nèi)存,存儲(chǔ)新內(nèi)容,然后讓變量指向新內(nèi)容所占的存儲(chǔ)空間。常量常量是內(nèi)存中用于保存固定值的單元,在程序中常量的值不能發(fā)生改變。Python并沒有命名常量。Python常量包括數(shù)字、字符串、布爾值和空值等。使用常量時(shí)要常量注意正確的書寫格式。7,‘a(chǎn)bc’,([1,2,3]),(1,2,3),True,{“英語”:80,“數(shù)學(xué)”:85}2.5數(shù)據(jù)的輸入與輸出print(輸出內(nèi)容)輸出數(shù)據(jù)print()函數(shù)是最常見的輸出函數(shù),向屏幕上輸出指定的文字。print()函數(shù)中可以用逗號“,”隔開多個(gè)字符串。輸出時(shí),print()函數(shù)會(huì)依次打印每個(gè)字符串,遇到逗號“,”會(huì)輸出一個(gè)空格。>>>print("100+200=",100+200)輸出為:100+200=300print()函數(shù)的一般格式字符串格式化輸出format()函數(shù)與print()函數(shù)結(jié)合使用將具備很強(qiáng)的格式化輸出能力。format()方法擁有更多的功能,操作方便,可讀性更強(qiáng)。str.format()函數(shù)的一般格式如下:<模板字符串>.format(<逗號分隔的參數(shù)>)說明:模板字符串使用一對雙引號(或單引號)括起來的字符串,由普通字符和格式字符構(gòu)成。顯示時(shí),普通字符原樣輸出。格式字符由{}及里面的格式控制標(biāo)記構(gòu)成,用于指明參數(shù)的顯示格式。要顯示的數(shù)據(jù)作為format()函數(shù)的參數(shù),參數(shù)之間用逗號分隔。>>>print('{我}今天{action}'.format(我='攔路虎',action='在編程序'))結(jié)果:攔路虎今天在編程序
通過位置格式化輸出print('{}今天{}'.format('攔路虎','在學(xué)習(xí)'))#通過位置結(jié)果:攔路虎今天在學(xué)習(xí)nums=[1,3,5,7,9,0,2,4,6,8]len,max,min=len(nums),max(nums),min(nums)#1:字符串拼接print("1:nums有"+str(len)+"個(gè)元素,最大值"+str(max)+",最小值"+str(min))#2:使用format函數(shù):接受不限個(gè)參數(shù),位置可以不按順序#{0}指參數(shù)在參數(shù)列表中的位置print("2:nums有{0}個(gè)元素,最大值{1},最小值{2}".format(len,max,min))#3通過字典設(shè)置參數(shù)dict={"len":len,"max":max,"min":min}print("3:nums有{len}個(gè)元素,最大值{max},最小值{min}".format(**dict))#4通過列表索引設(shè)置參數(shù)target=[len,max,min]print("4:nums有{0[0]}個(gè)元素,最大值{0[1]},最小值{0[2]}".format(target))1:nums有10個(gè)元素,最大值9,最小值02:nums有10個(gè)元素,最大值9,最小值03:nums有10個(gè)元素,最大值9,最小值04:nums有10個(gè)元素,最大值9,最小值0數(shù)字格式化輸出在數(shù)字的格式化輸出時(shí),格式字符的結(jié)構(gòu)如下:{<參數(shù)序號>:<格式控制標(biāo)記>}其中,<格式控制標(biāo)記>用來控制參數(shù)的顯示格式,包括:<填充><對齊><寬度>,<.精度><類型>6個(gè)字段。這些字段都是可選的,而且可以組合使用。各個(gè)字段的功能及含義見表2.22。importmathPI=math.pival=-2020.12297526#保留小數(shù)點(diǎn)后兩位print("1:{0:.2f}{1:.4f}".format(PI,val))
#帶符號保留小數(shù)點(diǎn)后兩位print("2:{0:+.2f}{1:+.3f}".format(PI,val))
#輸出浮點(diǎn)數(shù)百分比格式{:.2%}指數(shù)格式:{:.2e}print("3:{1:.2%}{0:.2e}".format(100000000,0.19876))
#指明對齊方式,填充print("4:{0:*<10d}{1:+>10d}".format(2020,2019))1:3.14-2020.12302:+3.14-2020.1233:19.88%1.00e+084:2020******++++++2019variable=input("提示文字")輸入數(shù)據(jù)Python提供input()函數(shù),其功能是讓用戶從鍵盤輸入字符串。若要將輸入的字符串變?yōu)橛脩羲愋?,需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。input()函數(shù)的一般格式>>>age=input()#輸入18>>>age'18'>>>age=int(age)#強(qiáng)制類型轉(zhuǎn)換>>>age18一次輸入多個(gè)內(nèi)容input()和split()結(jié)合使用,實(shí)現(xiàn)用input()一次輸入多個(gè)數(shù)據(jù)。split()函數(shù)的作用是拆分字符串。通過指定分隔符對字符串進(jìn)行切分,并返回分割后的字符串序列。a,b=(input("請輸入兩個(gè)單詞,以逗號為分隔符:").split(","))print(a,b)請輸入兩個(gè)單詞,以逗號為分隔符:hello,PythonhelloPythonm=(input("請輸入若干個(gè)單詞,以#為分隔符:").split("#"))#顯示列表print(m)#顯示列表中的每個(gè)元素forxinm:print(x)2.6基本運(yùn)算運(yùn)算符與表達(dá)式Python語言提供了豐富的運(yùn)算符。算術(shù)運(yùn)算符、賦值運(yùn)算符、位運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符、字符串運(yùn)算符、成員運(yùn)算符和身份運(yùn)算符等基本運(yùn)算符。有些不同功能的運(yùn)算符使用了相同的符號。運(yùn)算符具有優(yōu)先級和結(jié)合性等。運(yùn)算符表達(dá)式是由運(yùn)算符和運(yùn)算對象組成的式子,運(yùn)算對象就是在程序中要處理的各種數(shù)據(jù)。任何一個(gè)表達(dá)式經(jīng)過計(jì)算都應(yīng)有一個(gè)確定的值和類型。一個(gè)表達(dá)式的類型由運(yùn)算符的種類和運(yùn)算對象的類型決定。表達(dá)式運(yùn)算符具體描述例
子+相加運(yùn)算1+2的結(jié)果是3-相減運(yùn)算100-1的結(jié)果是99*乘法運(yùn)算2*2的結(jié)果是4/除法運(yùn)算4/2的結(jié)果是2%求模運(yùn)算10%3的結(jié)果是1**冪運(yùn)算。x**y返回x的y次冪2**3的結(jié)果是8//整除運(yùn)算,即返回商的整數(shù)部分9//2的結(jié)果4
常見運(yùn)算符算術(shù)運(yùn)算符運(yùn)算符具體描述例
子=直接賦值x=3;將3賦值到變量x中+=加法賦值x+=3;等同于x=x+3;-=減法賦值x-=3;等同于x=x-3;*=乘法賦值x*=3;等同于x=x*3;/=除法賦值x/=3;等同于x=x/3;%=取模賦值x=3;等同于x=x%3;**=冪賦值x**=3;等同于x=x**3;//=整除賦值x//=3;等同于x=x//3;賦值運(yùn)算符運(yùn)算符具體描述(對兩個(gè)表達(dá)式的二進(jìn)制按位執(zhí)行相應(yīng)操作)&按位與運(yùn)算。規(guī)則:只要兩個(gè)表達(dá)式的某位都為1,則結(jié)果的該位為1;否則,結(jié)果的該位為0|按位或運(yùn)算。規(guī)則:只要兩個(gè)表達(dá)式的某位有一個(gè)為1,則結(jié)果的該位為1;否則,結(jié)果的該位為0^按位異或運(yùn)算。規(guī)則:0異或0=0,1異或0=1,0異或1=1,1異或1=0~按位非運(yùn)算。規(guī)則:0取非運(yùn)算的結(jié)果為1;1取非運(yùn)算的結(jié)果為0<<
位左移運(yùn)算。規(guī)則:所有位向左移>>
位右移運(yùn)算。規(guī)則:所有位向右移位運(yùn)算符關(guān)系運(yùn)算符具體描述==等于運(yùn)算符(兩個(gè)=)。例如a==b,如果a等于b,則返回True;否則返回False!=不等運(yùn)算符。例如a!=b,如果
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度臨時(shí)保安服務(wù)合同-活動(dòng)期間安全保衛(wèi)
- 2025年度知識產(chǎn)權(quán)質(zhì)押合同終止及質(zhì)權(quán)實(shí)現(xiàn)協(xié)議
- 產(chǎn)品發(fā)布營銷策略規(guī)劃
- 影視制作發(fā)行合作框架協(xié)議
- 智能能源管理系統(tǒng)建設(shè)投資協(xié)議
- 家具企業(yè)家具設(shè)計(jì)與制造預(yù)案
- 哈他瑜伽介紹課件:哈他瑜伽-身心平衡的藝術(shù)
- 小學(xué)生心理輔導(dǎo)觀后感
- 網(wǎng)絡(luò)購物平臺(tái)合作運(yùn)營協(xié)議書
- 娛樂項(xiàng)目節(jié)目制作授權(quán)協(xié)議
- 隊(duì)列研究評估預(yù)后標(biāo)志物的外部驗(yàn)證
- 2024全國各地區(qū)英語中考真題匯編《第一期》
- 電梯應(yīng)急救援與事故處理考核試卷
- 第1章 跨境電商概述
- 2024-2030年中國長管拖車行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報(bào)告
- 《高等教育學(xué)》近年考試真題題庫(含答案)
- 2024福建省廈門市總工會(huì)擬錄用人員筆試歷年典型考題及考點(diǎn)剖析附答案帶詳解
- 供熱管道施工組織設(shè)計(jì)
- 浙江省中小學(xué)心理健康教育教師上崗資格證書管理辦法(修訂)
- 2024年青島港灣職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫審定版
- 2024年時(shí)事政治題(考點(diǎn)梳理)
評論
0/150
提交評論